C言語
1, char a[10] = {"中国"}, これはいくつバイトは占有しますか?
回答: 10 バイト必要です。
分析: 上記のコードは、 a に値を割り当てます。
a[0]='C'、a[1]='h'、a[2]='i'、a [3]='n'、a[4]='a'、a[5]='\0'、a[6]='\0'、a[7]='\0'、a [8 ]='\0', a[9]='\0'
つまり、10 バイトを占有します。
2.「中国」のみを指す場合?
答え: 合計 6 バイト。中国は 5 バイトを占め、'\0' で終わり、1 バイトを占めます。
Java 言語の場合
1. String s = "China"; は何バイトを占めますか?
答え: 5 バイト。
System.out.println(Charset.defaultCharset());//获取ide默认编码类型 String s = new String("China".getBytes()); byte[] b = s.getBytes(); System.out.println("" + b.length);
上記のコードは、「中国」が占めるバイト長が 5
2 であることを出力できます。 String s = "China"; は何バイトを占めるでしょうか?
回答: 漢字の場合、エンコードを考慮する必要があります。
(1) GBK エンコード (IDE のデフォルト) では、各漢字は 2 バイトを占有し、次に中国は 4 バイトを占有します。
(2) UTF-8 でエンコードされると、各漢字は 3 バイトを占有するため、中国は 6 バイトを占有します。
3. トランスコーディングの問題、GBK を UTF-8 に変換すると、バイト使用量が増加しますか?逆はどうでしょうか?
//获取的是 UTF-8编码 System.out.println(Charset.defaultCharset()); String s; try { s = new String("中国".getBytes(),"GBK"); byte[] b = s.getBytes(); System.out.println("" + b.length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
上記のコードは、UTF-8 から GBK へのエンコード形式であり、s の長さは 6 バイトから 9 バイトに変わります。
s コンテンツの変更: 中国 —> Juan浗
現在のエンコードは UTF-8 であるため、トランスコード後は 3 文字になり、9 バイトを占有します。ただし、逆の状況は次のようになります:
China (gbk) —> ?й? (utf-8)
s 長さは 4 バイトから 4 バイトに変わりますが、長さは 4 バイトから 4 バイトに変わります。テキストは変わっていません。ここ ? 1バイトを占有します
以上がhar[] と String 型が占めるバイト サイズの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。