如何处理Java中的特殊字符?

时间:2016-02-03 11:34:24

标签: java

我想保存用户在DB中作为CLOB发出的注释。它工作正常。后来我遇到了特殊字符问题。如果用户副本粘贴写字板中的评论,并且其中包含“单引号”或某些特殊字符(它们与通常有点不同),则会转换为反向问号或一些方框。我尝试使用下面的代码来处理它们。 enter image description here

values[4] = new String(values[4].getBytes("ISO-8859-1"), "UTF-8");

但我仍然拿着方盒子。在调试我意识到的问题之后,它无法处理空间。请参阅附图

注意:评论长度为122,无法只处理一个空格。我不知道这个空间有什么问题。

1 个答案:

答案 0 :(得分:0)

请注意,在java中,编码仅在

时才有意义
  1. 做某种(文件)IO或
  2. 将字符转换为字节
  3. Java的String - 对象始终编码为UTF-16,因此假设valuesString[],您的代码正在执行以下操作:

    1. 将字符串values[4]作为一组字符。
    2. 使用ISO8859-1-encoding
    3. 将每个字符转换为一个字节
    4. 使用UTF8编码将这些字节转换为字符。
    5. e.g。 £ - 字符将转换为字节值A3,但该单字节不能使用UTF-8转换回来,因为它只能是2字节序列的一部分。

      总结一下:该代码行完全被破坏,而使用String - 对象则无需考虑任何类型的编码。在转换为字节时,必须处理代码页问题,无论是在文件或网络流的I / O期间,还是在转换为字节数组进行加密时。