JavaのgetBytesメソッドで文化の損傷を解決する方法は何ですか。

Javaでは、文字列をバイト配列に変換するためにgetBytes()メソッドを使用することができます。ただし、文字列に有効なバイトに変換できない文字が含まれている場合、出力データが破損する可能性があります。この問題に対処する一般的な方法は以下の通りです:

  1. バイト数を取得する
  2. “UTF-8” ➔ 「UTF-8」
String str = "文化";
byte[] bytes = str.getBytes("UTF-8");
  1. 文字セットデコーダ
  2. バイト数を取得する
String str = "文化";
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
ByteBuffer buffer = ByteBuffer.wrap(str.getBytes());
CharBuffer charBuffer = decoder.decode(buffer);
byte[] bytes = charBuffer.toString().getBytes();
  1. 文字列に有効な文字が含まれているかを確認する:文字列をバイト配列に変換する前に、正規表現や他の方法を使用して無効な文字が含まれていないかを確認できます。無効な文字が見つかった場合、それらを無視するか置き換えるかを選択できます。例:
String str = "文化";
String validStr = str.replaceAll("[^\\p{Print}]", ""); // 只保留可打印的字符
byte[] bytes = validStr.getBytes();

どの方法を使っても、具体的な状況に基づいて適切な解決策を選択して、アウトプットの文化的損害を回避すべきです。

bannerAds