繁体   English   中英

Java中如何处理特殊字符?

[英]How to handle special characters in Java?

我想将用户在 DB 中给出的注释保存为 CLOB。 它工作正常。 后来我遇到了特殊字符的问题。 如果用户复制从写字板粘贴注释并且它包含“单引号”或一些特殊字符(它们与通常的有点不同),它们将转换为反向问号或一些方框 我尝试使用下面的代码来处理它们。 在此处输入图片说明

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

但我仍然得到方形盒子。 在调试问题后,我意识到它无法处理空格 请看附件图片

注意:注释长度为122,仅处理一个空格失败。 我不知道那个空间有什么问题。

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

  1. 做某种(文件-)IO或
  2. 将字符转换为字节

Java 的String对象始终编码为 UTF-16,因此假设valuesString[]您的代码将执行以下操作:

  1. 将 String values[4]作为一组字符。
  2. 使用 ISO8859-1 编码将每个字符转换为一个字节
  3. 使用 UTF8 编码将这些字节转换为字符。

例如, £字符将被转换为字节值A3但该单个字节不能使用 UTF-8 转换回来,因为它只能是 2 字节序列的一部分。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM