質問

オンラインストアで商品の価格を表示したいと考えています。私は現在次のことを行っています:

<span class="ourprice">
     <%=GetPrice().ToString("C")%>
</span>

GetPrice() は小数を返します。したがって、これは現在、値を返します。「£12.00」

「£12.00」という出力の正しい HTML は「」だと思います。&pound;12.00" したがって、これはほとんどのブラウザで正常に表示されますが、一部のブラウザ (Mozilla) ではこれが $12.00 と表示されます。

(サーバーは英国にあり、ローカリゼーションは web.config で適切に設定されています)。

以下は改善点ですか、それとももっと良い方法はありますか?

<span class="ourprice">
     <%=GetPrice().ToString("C").Replace("£","&pound;")%>
</span>
役に立ちましたか?

解決

£ 記号 (U+00A3)、および HTML エンティティ & #163;そして&ポンド;ブラウザではすべて同じように表示されるはずです。

ブラウザが£を認識しない場合、エンティティのバージョンを認識できない可能性があります。これは ISO 8859-1 (Latin-1) なので、Mozilla ブラウザーでレンダリングできないとしたら驚くでしょう (私の FF では確かにレンダリングできます)。

$ 記号が表示された場合は、次の 2 つのことが考えられます。1.ブラウザのデフォルト言語はEN-US 2です。Asp.net は自動ロケール切り替えを行っています。デフォルトの web.config 設定は次のようなものです

<globalization   culture="auto:en-us"  uiCulture="auto:en-US" />

(ほぼ確実に) 英国のみの価格が必要な場合は、web.config でロケールを指定するだけです。

  <globalization   culture="us"  uiCulture="en-gb" />

(またはページレベルで:)

  <%@Page Culture="en-gb" UICulture="en-gb" ..etc... %>

その後、String.Format("{0:C}",GetPrice()) や GetPrice().ToString("C") などの文字列形式では、asp.net が currentCulture を設定しているため、en-GB ロケールが使用されます。あなた

(ただし、偏執的な場合は、オーバーロードで en-gb カルチャを指定できます)。

他のヒント

これを試してみてください。アプリケーションに設定されているロケールが使用されます。

<%=String.Format("{0:C}",GetPrice())%>

使用

GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB"))

価格から文字列への変換を実行する関数を作成できます。このようにして、出力を詳細に制御できます。

ロケールの問題は、ロケールが Web サーバーに依存し、Web ブラウザーに依存しないことです。

ローカリゼーションを明示的に指定する必要がある場合は、CultureInfo を使用してそれを文字列フォーマッタに渡すことができます。

10 進数値の ToString("C2") プロパティを使用するだけです。web.config でグローバリゼーションを設定します。シンプルにしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top