我有一个java问题,我有点困惑。一直在寻找并测试一些东西,但没有任何成功。
我有这个FilterWriter类,必须将我的字符串,char和int更改为它的上限值。
public class UpperCaseFilterWriter extends FilterWriter {
public UpperCaseFilterWriter(Writer wrappedWriter) {
super(wrappedWriter);
}
@Override
public void write(String str, int off, int len) throws IOException {
while(len-- > 0){
write(str.charAt(off++));
}
}
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
while(len-- > 0){
write(cbuf[off++]);
}
}
@Override
public void write(int c) throws IOException {
//TODO Change int c to upper int c
out.write(c);
}
}
现在我的write(String) method
和我的write(char[]) method
正在调用我的write(int c) method
。
但现在我需要
它采用UTF-8编码,所以我有“é”或“ä”字母。
我已经尝试过以不同的方式进行int - > char - > upper char - > int,但这并不成功。
如果有人可以帮助我或者给我信息在哪里看,那就太好了。也许我需要以其他方式做到这一点,或者有一种方法可以通过一些字节编码/解码来实现...我不知道。
谢谢!!
Character.toUpperCase
是你需要的:它可以直接转换代码点:
@Override
public void write(int c) throws IOException {
//TODO Change int c to upper int c
out.write(Character.toUpperCase(c));
}
它正确处理非ascii字符,例如成功将é
转换为É