8

私はミファーレwriting のカードです。 readingRFID

WRITEカードにするには、次のようなものを使用していますByte[]

byte[] buffer = Encoding.ASCII.GetBytes(txt_IDCard.Text);  

次に、READカードから、次のエラーがspecial characters表示されるはずですが、次のエラーが表示されé, ã, õ, á, à...ます?

string result = System.Text.Encoding.UTF8.GetString(buffer);
string result2 = System.Text.Encoding.ASCII.GetString(buffer, 0, buffer.Length);
string result3 = Encoding.UTF7.GetString(buffer); 

例: 代わりにÀgua, amanhã, vocêI receive/readを取得します?gua, amanh?, voc?
どうすれば解決できますか?

4

3 に答える 3

8

ASCII はその定義上、128 文字しかサポートしていません。

従来のテキストを読む場合に必要なのは ANSI 文字です。

現在のロケールのデフォルトの ANSI コード ページの文字を解釈するEncoding.Default代わりに、を使用できます。Encoding.ASCII

理想的には、ANSI 文字が使用するコード ページを正確に把握し、この のオーバーロードをEncoding.GetEncoding(int codePage)使用してコード ページを明示的に指定します。次に例を示します。

string result = System.Text.Encoding.GetEncoding(1252).GetString(buffer);

Unicode に関する非常に優れたリファレンス ページを次に示します: http://www.joelonsoftware.com/articles/Unicode.html

そして別のここ: http://msdn.microsoft.com/en-us/library/b05tb6tz%28v=vs.90%29.aspx

しかし、読み書きするときはUTF8を使用するだけでよいかもしれません

カードリーダーの詳細はわかりません。カードに読み書きするデータは単なるバイトの負荷ですか?

その場合、読み取りと書き込みの両方に UTF8 を使用するだけで、すべて機能します。ANSI テキストを予期する (または提供する) 古いデバイスを使用している場合にのみ、ANSI を使用する必要があります。デバイスが特定の形式を暗示することなく盲目的にバイトを格納するだけの場合は、好きなことを行うことができます。この場合は、常に UTF8 を使用してください。

于 2013-06-10T12:19:06.467 に答える