byte b
がISO Latin 1(ISO 8859-1)としてエンコードされている場合はこれで十分です char output = (char)b;
これは動作するようですが、別の方法があるかどうかわかりません。ISO latin 1バイトからchar
答えて
ダイレクトキャストは、この特定のエンコードでは機能しているようです。ただし、適切な変換にはEncoding.GetCharsメソッドを使用することをお勧めします。
private static readonly Encoding Iso88591 = Encoding.GetEncoding("ISO8859-1");
public static void Main() {
var bytes = new Byte[] { 65 };
var chars = Iso88591.GetChars(bytes);
}
Encoding
クラス(特にEncoding.ASCII
に組み込まれています)を使用すると、バイト配列から文字を取得できます。
特に、オーバーロードの1つ。
私はBitConverter
's ToChar
を使用します。 1つは、.NETのchar
はデフォルトで2バイトの値であることを覚えておいてください。そのような単純なキャストは実際には最良のアイデアではありません。
ISO-Latin-1は1バイトですが、0で埋めますか? – maxfridbe
バイトの値が< 128の場合は問題ありません。 128より大きい場合は、キャストしても正しい文字が得られない可能性があります。
ISOコードページは基本的にすべてASCIIで、コードページの値の上半分(ASCIIページの基本IIRCはコンソールアプリケーションで便利なラインアート文字です)と、言語に役立つ文字コードページの
ただし、Unicodeコードページを簡単に見てみると、Latin-1補足は80-FF値(128-255)を占めています。したがって、この特定のインスタンスでは、おそらく問題ありませんが、たとえばキリル文字のISOコードページなどで何かが入力された場合、明示的にUnicode文字に変換する必要があります。
はい、これは正常に動作するはずです。 unicode chart for 8859-1を見ると、8859-1とユニコードの間に1対1のマッピングがあります。つまり、それをcharにキャストできます。
しかし、これはすべてのコードページでは当てはまりませんので、より堅牢なソリューションが良いアイデアかもしれません。
が正しくありません。 ASCIIとUTF-8の間には1対1のマッピングがあります。他のUnicode形式(UTF-16など)では、このようにマップされません。 – Oded
これは正確に近いです。 1つ以上の8859-1標準があります。典型的なISO損失。 –
Encoding.Convert
を使用できます。
byte[] latin1 = new byte[]{}; // Your data goes here, obviously
byte[] converted = Encoding.Convert(Encoding.GetEncoding("latin1"), Encoding.ASCII, latin1);
ラテン1が問題を引き起こすかどうかを心配することなく、新しいバイト配列で作業できます。
- 1. [ISO-8859-1]から[UTF-8]へのMySQL char変換の変換
- 2. UTF-8文字をISO Latin 1に変換する方法は?
- 3. Python ISO-8859-1エンコーディング
- 4. latin-1〜utf-8データベース
- 5. CythonのバイトからCのchar *
- 6. バイトをISO 8859-1エンコーディングに変換すると、nullバイトはどうなりますか?
- 7. JavaのString.getBytes( "ISO-8859-1")は文字列中の各2バイト文字の最初のバイトを返しますか?
- 8. 3地点のISOコード(ISO 3166-1 alpha-3)からMSジオイドを取得
- 9. JNI unsigned charをバイト配列
- 10. const char *からバイト配列にコピーするC++/c#interop Marshal :: Copy
- 11. 元のLatin-1 char []をSAXパーサから適切なUTF-8文字列に変換するにはどうすればよいですか?
- 12. SMS上のSendignバイト[]。 iso-8859-1を変換してください。
- 13. ISO C++ドラフト(n3290)からポイント:ISO C++ドラフト(n3290)から3.4.3.2/1名前空間のメンバー
- 14. Cビット操作/ 1バイトから別のバイトへのコピー
- 15. ほとんどLatin-1ファイル内のLatin-1以外のテキストの断片を見つけるには?
- 16. ISO-8859-1とHTMLエンティティ
- 17. JavaのUTF-8からISO-8859-1への変換
- 18. ウェブサイトの変更文字のエンコーディングiso-8859-1からUTF-8
- 19. Python:UnicodeEncodeError: 'latin-1'コーデックで文字をエンコードできません
- 20. CultureInfo for Latin language
- 21. cpp:char(-1)in Java-char
- 22. ByteBufferから残りのバイト(Java NIO)を1バイトだけ取得する方法
- 23. UTF8からiso-8859-1に変換する方法はありますか?
- 24. DOM4Jドキュメント:ISO-8859-1 xmlを読む
- 25. URLエンコードフォームJavaScriptのISO-8859-1のPOST
- 26. ISO 3166-1 alpha-2リージョン付きMySQLデータベース
- 27. file_get_contents()ISO-8859-1エンコーディングを破る
- 28. iphone ISO-8859-1エンコーダどうやって?
- 29. XMLのUTF-8またはISO-8859-1
- 30. InputStreamのLatin-1の内容をUTF-8文字列に変換する
私はcharがUTF-8であることを知っているので、キャスティングすればうまくいきます。 – maxfridbe