java - 读取统一码

标签 java unicode

我正在使用 java io 从可能输出 é 等字符的服务器检索文本。 然后使用System.err输出它,结果是'?'。我使用UTF8编码。怎么了? int 长度 = 0;

char[] buffer = new char[1024];
OutputStream os = sock.getOutputStream();
InputStream is = sock.getInputStream();
os.write(query.getBytes("UTF8"));//iso8859_1"));

Reader reader = new InputStreamReader(is, Charset.forName("UTF-8"));
do {
    len = reader.read(buffer);
    if (len > 0) {
        if (outstring == null) {
            outstring = new StringBuffer();
        }
        outstring.append(buffer, 0, len);
    }
} while (len > 0);
System.err.println(outstring);

编辑:刚刚尝试了以下代码:

StringBuffer b = new StringBuffer();
for (char c = 'a'; c < 'd'; c++) {
    b.append(c);
}
b.append('\u00a5'); // Japanese Yen symbol
b.append('\u01FC'); // Roman AE with acute accent
b.append('\u0391'); // GREEK Capital Alpha
b.append('\u03A9'); // GREEK Capital Omega

for (int i = 0; i < b.length(); i++) {
    System.out.println("Character #" + i + " is " + b.charAt(i));
}
System.out.println("Accumulated characters are " + b);

结果也变成了垃圾:

Character #0 is a
Character #1 is b
Character #2 is c
Character #3 is ¥
Character #4 is ?
Character #5 is ?
Character #6 is ?
Accumulated characters are abc¥???

最佳答案

首先,验证系统属性 (file.encoding) 实际上是 UTF8。如果是,那么您的问题不是您正在运行的代码,而是您的终端程序(或其他输出显示)无法正确呈现输出。

关于java - 读取统一码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672526/

相关文章:

java - android sqlite异常游标或数据库未关闭

java - 如何在 RESTful Web 服务中使用 Jersey 框架抛出 HTTP 204 状态代码?

java - 从命令行获取文件路径并在 "file"构造函数中使用它?

java - 线程消耗的内存

python - Flask 表单数据类型错误(unicode 数据不是 unicode)

html - IE7 不会显示带有编码文件名的 bmp 文件

java - 如何知道线程需要完成的确切时间

python - os.walk 无法正确处理路径中的 unicode 字符

php - Unicode 代码点转义语法

c# - 如何将项目符号字符打印到控制台?