★★Java質問・相談スレッド184★★ (371レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
176(1): デフォルトの名無しさん (ワッチョイ ebbb-F0re) [sage] 2023/03/24(金) 01:16:49.67 ID:YHnwGLAd0(1/3) AAS
とある文字コードのバイト列を他の文字コードの文字列に変換するには
下記みたいに一旦tmpStr、tmpBytesに変換しないと駄目なのかな?
byte[] bytes = {0x00, 0x01, 0x02, 0x03}; // 例えばShift_JISとする
String tmpStr = new String(bytes, "Shift_JIS");
byte[] tmpBytes = tmpStr.getBytes("UTF-8");
String convStr = new String(tmpBytes, "UTF-8");
178: デフォルトの名無しさん (ワッチョイ ebbb-F0re) [sage] 2023/03/24(金) 09:04:18.56 ID:YHnwGLAd0(2/3) AAS
>>177177(1): デフォルトの名無しさん (ワッチョイ 13ad-F0re) [] 2023/03/24(金) 03:15:33.42 ID:6qfM3P2X0(1) AAS
>>176
バイト列を new String(bytes, charsetName) で String のインスタンスにしたら内部では char[] に UTF-16 で保持されている。つまり Unicode になっている。
その String のインスタンスから何かのエンコードのバイト列にしたいなら getBytes(charsetName) 等を使う。
そうするとこのステップを踏まないと正しくエンコードされた
文字列が出力されないんですね
180(1): デフォルトの名無しさん (ワッチョイ ebbb-F0re) [sage] 2023/03/24(金) 23:15:40.94 ID:YHnwGLAd0(3/3) AAS
>>179179(1): デフォルトの名無しさん (ワッチョイ e98f-a1qf) [] 2023/03/24(金) 11:22:42.95 ID:miXOHSMu0(1) AAS
> byte[] bytes = {0x00, 0x01, 0x02, 0x03}; // 例えばShift_JISとする
Shift_JISでエンコードされたバイト列
> String tmpStr = new String(bytes, "Shift_JIS");
Shift_JISでデコードしてStringを得る
> byte[] tmpBytes = tmpStr.getBytes("UTF-8");
UTF-8でエンコードされたバイト列
> String convStr = new String(tmpBytes, "UTF-8");
UTF-8でデコードしてStringを得る
これらは同じものだよ
・Shift_JISでデコードしたString
・UTF-8でデコードしたString
文字コードはString→バイト列の変換規則であって
String自体にはShift_JISもUTF-8もないよ
バイト列そのものが文字コードであって
相互に変換するのが文字コードの変換になる感じですか
その相互の変換はStringを介さないと出来ないのでしょうか?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.558s*