避免在Java中打印unicode替换字符

aku*_*001 1 java unicode replace character

在Java中,为什么要Character.toString((char) 65533)打印出这个符号: ?

我有一个Java程序,可以在任何地方打印这些字符.这是一个很大的计划.我有什么想法可以避免这种情况?

Pau*_*and 11

最可能的情况之一是您尝试使用UTF-8字符集读取ISO-8859数据.如果您遇到一系列无效的UTF-8字符,那么它将被替换为 符号.

检查输入流,并确保使用正确的字符集读取它们.


Bal*_*usC 8

在java中,为什么Character.toString((char)65533)打印出这个符号: ?

由于确切这种特殊的字符IS与特定相关的代码点.它似乎没有显示随机字符.

我有一个java程序,可以在这个地方打印这些字符.这是一个很大的计划.我有什么想法可以避免这种情况?

你的问题出在其他地方.它至少归结为你应该设置涉及的每一步byte - char转换(在文件/数据库中存储文本,从文件/数据库中读取文本,操作文本,传输文本,显示文本等)UTF-8.

引起我注意的是,Java完全没有什么特别之处0xFFFD,它只是用一个问号替换未覆盖的字符?,而且你一直坚持0xFFFD来自Java.我知道Firefox完全按照你说的去做,所以你可能会把"Firefox"与"Java"混淆吗?

如果这是真的并且您实际上在谈论Java Web应用程序,那么您需要至少设置HTTP响应编码UTF-8.您可以通过置于<%@ page pageEncoding="UTF-8" %>相关JSP页面的顶部来实现.您可能会发现本文对于获取更多背景信息以及解决此"Unicode问题"所需的所有步骤和解决方案的详细概述非常有用.