0
ファイルからUTF-8文字をバイトとして読み取ることができません。 バイトから文字に変換する際に、UTF-8文字がquestionmarak(?)として表示されています。ファイルからUTF-8文字をバイトとして読み取る方法は?
以下のコードスニペットは、ファイルの読み取りを示しています。
ファイルからUTF-8チャンネルをどのように読み取ることができるか教えてください。 とplzバイト配列の読み取りプロセスの問題は何ですか?
public static void getData {
FormFile file = actionForm.getFile("UTF-8");
byte[] mybt;
try
{
byte[] fileContents = file.getFileData();
StringBuffer sb = new StringBuffer();
for(int i=0;i<fileContents.length;i++){
sb.append((char)fileContents[i]);
}
System.out.println(sb.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Output ::??Docum??ents (input file content is : "ÞDocumÿents" , it contains some spanish characters.)
キャストが実際に変換されないだろうUTF-16コードユニットへのchar? –
@Vineet:いいえ、 'char' *は* UTF-16コード単位です。そのバイトの値を取ってUTF-16コード単位として解釈するだけで、*バイトから変換します。これは基本的にISO-8859-1の機能です。バイト0-255をU + 0000にU + 00FFにマップします。 –
ああ、あなたは正しい。私はStringBufferとバイト配列の間で混乱しています。 –