6

データベースとしてfirebirdを使用しています。通貨記号をデータベースに保存するにはどうすればよいですか。どの文字セットを使用する必要がありますか、または一般的にベストプラクティスは何ですか?

たとえば、「$」または「¥」の格納は簡単に表示されますが、より複雑な記号はデータベーステーブルに正しく表示されません。つまり、「₡」はデータベースに格納されません。

この種のことの「ベストプラクティス」として一般的に受け入れられているもの。

編集
-使用している言語がC#であることを指定します。UTF8が答えになると思いましたが、データベースに文字を格納するにはどうすればよいですか、Unicode、16進数、または10進数に相当するものを使用しますか?それとも単に文字を使用しますか?

4

3 に答える 3

6

このアプローチの問題

通貨テキストを出力する必要がある場合は、通貨データに関連付けられた通貨記号を保存しないことをお勧めします。シンボルが別の列に格納されていて、必要に応じて引き出す場合でも。むしろ、通貨データの地域/ロケールを保存し、地域のデフォルトの書式設定を使用して通貨を書式設定することをお勧めします。使用している言語/プラットフォームにロケールベースの通貨機能がない場合でも、これはより良いアプローチだと思います。その場合、少しのアプリケーション ロジックで書式設定を行い、それをユーザーに表示します。

これの主な理由は、異なる地域やロケールでは記号が異なるだけでなく、記号の配置や通貨自体のフォーマットも異なるためです。また、異なる種類のドルを区別する必要があるかどうかも考えてください。ある時点で、ドルの金額が USD、HKD、AUD などであるかどうかを示す必要があるかもしれません。

通貨の例

  1.234,56€ - Euro (Germany)
€ 1.234,56  - Euro (Netherlands)
€ 1,234.56  - Euro (Ireland)
  123,456円 - Yen (Japan)
  123,456¥ - Yen (Japan) - yes there are two different currency marks!

その他のリソース

  • 通貨のグローバル化に関する MSDN サイトで、この問題をよりよく説明するのに役立つ良い記事を見つけました。
  • これは、ユーロのロケールごとのさまざまな形式に関するサイトです。
于 2009-04-24T01:40:22.787 に答える
2

2 つの主な落とし穴を指摘します。

まず、データベースが utf-8 として正しくインストールされていることを確認してください。一部のデータベースでは、インストール時にこれを選択する必要があり、他のデータベースではスキーマ/ユーザーの作成時に選択する必要があります。

次に、使用するプログラミング言語が utf-8 をサポートしていることを確認してください。php は、文字列操作と utf-8 で問題を引き起こすことが特に知られています。

firebird の create database ステートメントは次のようになります。

utf-8 をサポートする最初のバージョンである、少なくともバージョン 2.0 の firebird を使用していることを確認してください。

      CREATE DATABASE <database> 
      USER <username> 
      PASSWORD <password> 
      PAGE_SIZE <pagesize> 
      DEFAULT CHARACTER SET UTF8

または、単一のフィールドを作成することもできます

      CREATE TABLE money (
       SYMBOL VARCHAR(50) CHARACTER SET UTF8 )

編集:何を保存するかを明確にするために、画面に表示される文字を正確に保存します。ほとんどの場合、任意のプログラムからデータベースまたは SQL ステートメント内にカット アンド ペーストできます。int/hex/oct/ascii への変換をいじる必要はまったくありません。

Edit2:もちろん、完全にフォーマットされた数値を保存するのではなく、単一の通貨記号のみを保存します。

于 2009-04-23T23:38:09.133 に答える