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

避免在Java中打印unicode替换字符,java,unicode,character,replace,Java,Unicode,Character,Replace,在Java中,为什么Character.toString((char)65533)打印出这个符号:� ? 我有一个Java程序,可以把这些字符打印得到处都是。这是一个大项目。有什么办法可以避免这种情况吗?没有Unicode字符U+FFFD。因此,代码在逻辑上是不正确的。Unicode替换符号的预期用途是替换错误输入(例如(char)65533) 如何修复:不要把垃圾放在字符串中。字符串用于文本。字节用于随机二进制数据。没有Unicode字符U+FFFD。因此,代码在逻辑上是不正确的。Unicod

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


我有一个Java程序,可以把这些字符打印得到处都是。这是一个大项目。有什么办法可以避免这种情况吗?

没有Unicode字符U+FFFD。因此,代码在逻辑上是不正确的。Unicode替换符号的预期用途是替换错误输入(例如
(char)65533


如何修复:不要把垃圾放在字符串中。字符串用于文本。字节用于随机二进制数据。

没有Unicode字符U+FFFD。因此,代码在逻辑上是不正确的。Unicode替换符号的预期用途是替换错误输入(例如
(char)65533

如何修复:不要把垃圾放在字符串中。字符串用于文本。字节用于随机二进制数据。

那么,您希望它做什么?如果你“到处”看到这些字符,我怀疑你有不好的数据。。。您收到的数据很少不能用Unicode表示

您是如何开始获取数据的?

那么,您希望它做什么?如果你“到处”看到这些字符,我怀疑你有不好的数据。。。您收到的数据很少不能用Unicode表示


如何开始获取数据?

最可能的情况之一是,您试图使用UTF-8字符集读取ISO-8859数据。如果您遇到一个无效的UTF-8字符序列,那么它将被替换为� 象征


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

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

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

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

因为此特定字符与特定字符关联。它并不像您想象的那样显示随机字符

我有一个java程序,可以把这些字符打印得到处都是。这是一个大项目。有什么办法可以避免这种情况吗

你的问题在别的地方。至少归结起来,您应该将涉及
字节
-
字符
转换(在文件/db中存储文本、从文件/db中读取文本、操作文本、传输文本、显示文本等)的每个步骤设置为使用
UTF-8

吸引我注意的是,Java对
0xFFFD
完全没有什么特别之处,它只是用问号
替换了未覆盖的字符,而您一直坚持
0xFFFD
来自Java。我知道Firefox完全按照你说的做了,所以你可能把“Firefox”和“Java”混淆了吗

如果这是真的,并且您实际上是在谈论Java Web应用程序,那么您至少需要将HTTP响应编码设置为
UTF-8
。您可以通过将
放在相关JSP页面的顶部来实现这一点。您可能会发现获取更多背景信息以及解决此“Unicode问题”所需的所有步骤和解决方案的详细概述非常有用

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

因为此特定字符与特定字符关联。它并不像您想象的那样显示随机字符

我有一个java程序,可以把这些字符打印得到处都是。这是一个大项目。有什么办法可以避免这种情况吗

你的问题在别的地方。至少归结起来,您应该将涉及
字节
-
字符
转换(在文件/db中存储文本、从文件/db中读取文本、操作文本、传输文本、显示文本等)的每个步骤设置为使用
UTF-8

吸引我注意的是,Java对
0xFFFD
完全没有什么特别之处,它只是用问号
替换了未覆盖的字符,而您一直坚持
0xFFFD
来自Java。我知道Firefox完全按照你说的做了,所以你可能把“Firefox”和“Java”混淆了吗


如果这是真的,并且您实际上是在谈论Java Web应用程序,那么您至少需要将HTTP响应编码设置为
UTF-8
。您可以通过将
放在相关JSP页面的顶部来实现这一点。您可能会发现,获取更多背景信息以及解决此“Unicode问题”所需的所有步骤和解决方案的详细概述非常有用。

看看这个。

看看这个。

它们是从一开始就来的吗?为什么它们在你打印的字符串中?请澄清这一点。它们的来源之一是rss源。还有可能来自其他各种web服务。它们是从一开始就出现的吗?为什么它们在你打印的字符串中?请澄清这一点。它们的来源之一是rss源。也可能来自其他各种web服务。这一个说有。。。人们可能会争论“无效输入字符”本身中表示的值是否为有效字符。它不是字母,不是数字,不是标点符号,不是数学符号,等等。它是一个“特殊”字符。但因为它甚至有一个字体表示,我当然会称之为字符,即使它被用作替代品。有很多未使用的代码点,让我们不要进一步混淆。。。人们可能会争论该值是否表示为“无效输入字符”