2016-09-10 5 views
-4

string(System.String)はUTF-16ですが、文字列をUTF-8に変換すると、Encoding.UTF8.GetString()メソッドが戻りますAGAIN文字列(UTF-16)。stringはUTF-8ではないため、不可能です。文字列(UTF-16)を返す

var foo = Encoding.UTF8.GetString(Encoding.Unicode.GetBytes("hello")); 
Console.WriteLine(foo.GetType()); // Prints "System.String" 
+1

あなたの質問は何ですか?今のところこれはほんの一例です。 – AgataB

+0

UTF-8文字を返すメソッドは、文字列(および文字列はUTF-16)を返します。私は文字列(UTF-16)をUTF-8に変換し、再び文字列を受け取りました(UTF-16)。 –

+0

タイプ 'string'は内部的にUTF-16です。どのようにUTF8になると思いますか? UTF-8は、ファイル内容の 'byte'配列のエンコーディングですが、' string'型変数の値ではありません。 – i486

答えて

2

はい、Stringは常にUTF-16です。 StringをStringに変換すると、同じ文字列またはデータが失われます。

利用可能なまたはカスタムのエンコードを使用して、Stringをバイト配列に変換できます。ほとんどの場合、特にファイルを書く場合は、書く人に、のエンコーディングを伝えるだけです。


UTF-16とUTF-8についての混乱があった場合には、それらは同じ文字セットの両方のエンコーディングです:ユニコード。データの損失はありません。最も適切なもの、通常はメモリ内のUTF-16、ファイルやストリーム用のUTF-8を使用するだけです。

+0

https://msdn.microsoft.com/en-us/library/kzb9f993(v=vs.110).aspx ご覧のとおり、UTF-8に変換するメソッドは、*何か* UTF- 8。 –

+0

テキストはなくエンコードされたテキストです。 UTF-8でエンコードされたテキスト(バイト配列)を取り、UTF-16でエンコードされたテキスト(String)を返します。 –

+2

@JoeDay 'Encoding.GetString'は**を**エンコーディングから変換します。 'Encoding.GetBytes'は**を**エンコーディングに変換します。 – PetSerAl

関連する問題