文を含むバイトの配列があります。この文の小文字を大文字に変換する必要があります。これが私がした関数です:
public void CharUpperBuffAJava(byte[] word) {
for (int i = 0; i < word.length; i++) {
if (!Character.isUpperCase(word[i]) && Character.isLetter(word[i])) {
word[i] -= 32;
}
}
return cchLength;
}
「コップ一杯の水」のような文でうまく機能します。問題は、「ç、á、é、í、ó、ú」などを含むすべてのANSI文字で機能する必要があることです。Character.isLetterメソッドはこれらの文字では機能しないため、大文字に変換されません。
これらのANSI文字をJavaで文字として識別する方法を知っていますか?
編集
誰かが知りたければ、私は答えの後にもう一度メソッドを実行しました、そして今それはこのように見えます:
public static int CharUpperBuffAJava(byte[] lpsz, int cchLength) {
String value;
try {
value = new String(lpsz, 0, cchLength, "Windows-1252");
String upperCase = value.toUpperCase();
byte[] bytes = upperCase.getBytes();
for (int i = 0; i < cchLength; i++) {
lpsz[i] = bytes[i];
}
return cchLength;
} catch (UnsupportedEncodingException e) {
return 0;
}
}