我知道Microsoft Office使用不同的编码,当有人将文本从办公室复制并粘贴到java文本面板时,会发生什么,看起来不错。但是,然后将其存储到MySQL数据库中并检索它。它突然变成了各种垃圾拉丁字符。
我试图在存储之前将其转换为utf-8
,但似乎无效。
无论如何你都可以检测到你的文字中是否有拉丁字符,所以我只需弹出一个警告就可以让用户在保存之前知道。
或者,如果无论如何都要禁用jTextField只显示UTF-8字符的所有内容,那么当用户从word中复制和粘贴时,它会自动显示所有随机代码而不是看起来很好(在开头)< / p>
示例:当用户在word中输入内容并粘贴到jTextField时,我们直接传递字符串(注意我们的sql数据库是utf8_general_ci
),然后我们只是将它提取到JPanel,我们得到:
ÃÆ'ƒÀ â€央行“¢ÃƒÆ'â€â,¬Å¡Ãƒâ¢šÃ,†ÃÆ'Ã’ÀšÃ,¢ÃÆ'Ã,¢Ã¢â€央行¡Ã,¬Ãâ€|Ã,¡ÃÆ'â€â,¬Å¡Ãƒâ†šÃ,¬ÃÆ'Ã’ÀšÃ,¢ÃÆ'Ã,¢Ã¢¢? ‚
答案 0 :(得分:1)
我遇到过类似的问题。首先要做的是找出究竟写入数据库的内容。使用MySQL非常简单,只需登录并运行
即可SELECT HEX( column ) FROM table;
这将为您提供已写入表的字节数。然后,您可以将an app I wrote用于此目的。从MySQL获取十六进制字符串,使用-b标志获取give it to the main class字节。你将得到一大堆输出,希望其中一个将是你原来的。
一旦你知道它的存储内容,你就有了调试的起点。