2016-10-03 9 views
0

私はコードが正常に動作するようですヘックス値StringをHexに変換するためのcharsetですか?

public static String toHex(String arg) throws UnsupportedEncodingException { 
    return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/))); 
} 

に文字列を変換するには、このコードを使用するが、私はそこに置くことになっていますどのようなコメント

/*YOUR_CHARSET?*/ 

を理解していませんか?

+0

'' UTF-8 ''で試してみましたか? –

+1

空のままにすると、システムのデフォルトの文字セットが使用されます。 –

+1

@ JornVerneeが空のままにしておきたい場合は、それを変更することができます。プラットフォームのデフォルトの文字セットは、EBCDICまたは最初の127文字のASCIIとは異なる別の文字セットです。 –

答えて

2

コードは正常に動作しているようですが、コメントは理解できません /YOUR_CHARSET?/?私はそこに置くはずですか?

プラットフォームのデフォルト文字セットを使用してそれを符号化することによりarray of bytesStringを変換String#getBytes()方法。 String#getBytes()を呼び出すと、コードがプラットフォームに依存するため、プラットフォームの変更後にデコードの問題が発生する可能性があるため、String#getBytes(charset)を代わりに使用することを強く推奨します。プラットフォームが何であってもと仮定して、と指定した場合、指定された文字セットはStringのすべての文字を正しくカバーすることができます。実際に例えばStringにアクセント記号の付いた文字を使用していて、ASCIIのように一致しない文字セットを使用すると、後でデコードの問題が発生します。

0

あなたは決めることができますが、あなたが決めたものは、受信者に伝えるか、通信に失敗したことになります。あるいは、仕様書に従っている場合は、その仕様書を参照してください。

また、データをカバーする文字セットのエンコーディングを使用することもできます。そうでない場合は、一部の文字が疑問符に置き換えられます。 JavaのStringの文字セットがUnicodeであることを考えると、UnicodeのUTF-8エンコーディングは当然の選択です。

関連する問題