ローカリゼーションの問題があります。
私の勤勉な同僚の1人が、アプリケーション全体のすべての文字列を、辞書に含まれている定数に置き換えました。ユーザーが言語を選択すると、その辞書にはさまざまな文字列が配置されます(デフォルトでは英語ですが、ターゲット言語はドイツ語、スペイン語、フランス語、ポルトガル語、北京語、タイ語です)。
この機能のテストでは、ボタンを変更して、スペイン語とArial Unicode MSフォント(アプリケーション全体で使用)の両方で表示されるñ文字のテキストを含める必要がありました。
問題は、プログラムがそれを表示する方法を知らなかったかのように、ñが正方形のブロックとして表示されていることです。ディスクから読み取られている特定の文字列をデバッグすると、デバッガーはその文字を正方形のブロックとしても報告します。
では、失敗はどこにあるのでしょうか。私はそれがいくつかの場所にある可能性があると思います:
1)メモ帳はUnicodeに対応していない可能性があるため、そこに表示されるñはvs2008が期待するものと同じではないため、プログラムは文字を正方形として解釈します(編集:メモ帳はvsと同じ文字を表示します。つまり、両方ともñ。同じ場所で。)
2)vs2008はñを処理できません。信じがたいことです。
3)テキストは正しく読み込まれますが、vs2008のデフォルトのフォントでは表示できません。そのため、デバッガーは正方形を表示します。
4)テキストが正しく読み込まれないため、通常のStreamReader以外のものを使用して文字列を取得する必要があります。
5)テキストは正しく読み込まれますが、C#のデフォルトのStringクラスはñをうまく処理しません。信じがたいことです。
6)私が持っているArial Unicode MSのバージョンには、 http://www.fileinfo.infoによって5万文字の1つとしてリストされているにもかかわらず、ñがありません。
他に私が省略できたものはありますか?
助けてくれてありがとう!