【发布时间】:2012-07-22 15:09:28
【问题描述】:
如果我从 word 复制,在文本字段中,会插入垃圾字符。从jsp页面发布参数时它仍然很好。但是在获取 java 中的参数时,它会转换为垃圾。我在插入之前使用了以下代码来消除垃圾。我正在使用mysql数据库。 (JBOSS 5.1 GA 服务器)
String outputEncoding = "UTF-8";
Charset charsetOutput = Charset.forName(outputEncoding);
CharsetEncoder encoder = charsetOutput.newEncoder();
byte[] bufferToConvert = userText.getBytes();
CharsetDecoder decoder = (CharsetDecoder) charsetOutput.newDecoder();
try {
CharBuffer cbuf = decoder.decode(ByteBuffer.wrap(bufferToConvert));
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(cbuf));
userText = decoder.decode(bbuf).toString();
} catch (CharacterCodingException e) {
e.printStackTrace();
}
但我仍然收到单引号('')和双引号(“”)的垃圾字符。我需要 UTF-8 格式的字符串。谁能建议我可能错在哪里?
示例:输入 -“esgh”。 输出 - ??esghâ?? : 想要的输出 - “esgh”。
【问题讨论】:
-
你能举几个输入和想要输出的例子吗?
-
我举了一个例子。但它也发生在单引号中。
-
你不能只按 ASCII 值过滤吗?只需取大于 31 且小于 128 的所有值。
-
您的
inputDecoder变量未在您的代码示例中使用。这是故意的还是错误的?我原以为您会为此输入字符类型获得一个Charset实例,并使用它而不是您从输出字符集中获得的解码器。 -
@DuncanJones 它没有任何区别。无论如何,我正在尝试别的东西。所以发错了。