2011-07-28 146 views
-1

如何在UTF-8编码失败时避免扩展ASCII字符的Unicode替换字符?Unicode替换字符

有没有办法通过避免Java中的unicode编码来保留扩展的ASCII字符?

+3

没有“扩展ASCII”这样的东西。 ASCII定义了字符值0-127。 –

回答

4

编码以UTF-8 的Unicode数据不能失败全部 Unicode字符可以用UTF-8编码,所以没有失败情况(除了可能缺少内存或类似的东西)。

如果你解码为 UTF-8,那么当输入不是真正的UTF-8时,它可能会失败。在这种情况下,尝试使用UTF-8对其进行解码是错误的方法,并且无法“修复UTF-8”来做正确的事情:您必须选择正确的编码。

您能否提供一些示例输入和代码来演示究竟是什么这是您遇到的问题?

-1

没有理由避免unicode编码。实际的问题来自可靠的旧编码。

以UTF-8格式转换所有文件,并使用设置为UTF-8的系统属性file.encoding启动应用程序。

java -Dfile.encoding=UTF-8 

如果您想要更详细的答案,请提供一些关于您的上下文的更多信息。

+1

更好的解决方案是*指定*代码中使用的编码,而不是依赖正确设置的系统属性。 –

+0

在我们的数据库中,数据包含像Ô或æ这样的字符。我们的java应用程序返回一个包含这些字符的XML字符串。但是,如果应用程序被视为Web服务,并且在axis 1.4 soap客户端的情况下编码失败,但在xfire soap客户端的情况下不会失败。在Axis的情况下,这些字符(Ô或æ)在最终结果中显示为替换char - \ ufffd。 Axis使用utf-8。不知道为什么会这样。我们的应用程序需要使用Axis soap client unfortunatley。任何帮助,高度赞赏。提前致谢。 –