【发布时间】:2012-06-09 03:32:26
【问题描述】:
我有一个网站,需要将文本字段中的数据存储到 mysql 数据库中。
前端是perl。我使用utf8::encode将数据编码为utf8。
向连接到 mysql db 并插入此文本的 Java 后端发出请求。 对于表,默认字符集设置为 utf8。 这在许多情况下有效,但在某些情况下会失败。
如果我使用テスト,则存储在数据库中的数据显示问号:ã??ã?¹ã??。
如果我尝试直接从 sql 浏览器插入 utf8 编码的字符串,一切正常。
更新事件集摘要 = ãã¹ã where event_id = 11657;
在插入时,我注意到 mysql 查询浏览器中出现了一些空白字符,例如:ã ã¹ ã。
从这里插入后,数据库中的数据显示数据库中的一些框而不是这些空格,并且テスト在utf8解码后正确显示在网站上。
问题是当我直接从网站插入时,这些特殊字符会在数据库中作为问号出现。
有人可以帮我处理这些特殊字符吗?我需要以不同的方式处理它们吗?
【问题讨论】:
-
听起来数据流中的某个地方存在编码问题。如果不了解您的实际代码,很难说在哪里,但 Java 中的一个常见罪魁祸首是使用
String.getBytes()(没有编码参数)。另一种可能性是网页通信中的编码问题。 -
-1 否决providing code,实际上没有人可以reproduce the problem,并且所有答案(到目前为止4 个)都充满了假设。英文散文是代码的糟糕替代品。