java - 文字列エンコーディングについて。
我想大声告诉你
我想大声告诉你 2017-05-27 17:41:40
0
1
722
リーリー

出力:
[-106, -85, 78, 22, 63, 78, -32, 58, -86, 77, 16, 81, -86, 81, -46, 4]

[-17、-65、-67、-17、-65、-67、78、22、63、78、-17、-65、-67、58、-17、-65、-67、 77、16、81、-17、-65、-67、81、-17、-65、-67、4]

エンコード前の出力とエンコード後のデコードが異なるのはなぜですか?

我想大声告诉你
我想大声告诉你

全員に返信(1)
黄舟

そう思うかもしれません(new String(b)).getBytes().equals(b),实际上并非如此。(尽管new String(s.getBytes()).equals(s)きっと。 )

なぜならbyte[]转换成String时,有些字节是未必能转换成字符的,比如第一个-106、第二个-85就是,所以转换成String时前两个就变成了未知字符(表面上会显示?,但实际上是一个Unicode字符),再转成byte[](你这边defaultCharset应该是UTF-8)、不明な文字はそれぞれ 3 バイトになります。

GBK を使用する場合、状況は悪くありませんが、それでも若干異なります:

リーリー

結論は次のとおりです: ハッシュ値を表すために文字列を使用する場合、byte[] を文字列に強制変換することはできませんが、通常どおり 16 進表現に変換します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート