1

ResourceManagerWeb フォーム アプリケーションで文字列をローカライズするために使用します。アプリケーションは と をサポートしen-usていsv-seます。文字列はそれぞれのリソース ファイルから正しく取得されますが、表示されると、Unicode 文字がジャンク値として表示されます。

resources.sv-se.restext

...
ContactInfoFormatPrimary={0} (primär)
...

出力

ここに画像の説明を入力

リソースを取得するコード:

ResourceManager resourceManager  = GetResourceManager(...)
...
text = resourceManager.GetString(resourceId);

コードをデバッグしようとしましたが、返されたテキストは{0} (prim�r)

リソースが正しくデコードされない原因は何ですか?

アップデート:

コンソール アプリで同じアーキテクチャを使用して、正しい文字列を取得できました。アプリケーションの構成に関連して注意すべきことはありますか?

4

1 に答える 1

2

ほとんどの場合、リソース テキスト ファイル ( .txt.restext) をUTF-8またはUTF-16/として保存していませんUnicodeのMSDN ドキュメントResgen.exeから次の段落を参照してください。

リソースを含むテキスト ファイルは、Basic Latin 範囲 (U+007F まで) の文字のみを含む場合を除き、UTF-8 または Unicode (UTF-16) エンコードで保存する必要があります。Resgen.exe は、ANSI エンコーディングを使用して保存されたテキスト ファイルを処理するときに、拡張 ANSI 文字を削除します。

テキスト ファイルのエンコンディングを確認する最も簡単な方法は、 でファイルを開き、メニューをNotepadクリックSave as...して、右下隅のドロップダウンに表示される内容を確認することです。またはに設定する必要があります。FileEncodingUTF-8Unicode

エンコーディングを修正するには、ダイアログでUTF-8またはを選択し、元のファイルを上書きします。UnicodeSave as...NotepadSave

于 2016-02-02T12:10:01.310 に答える