将Microsoft Office文档中的复制/粘贴文本正确存储到MySQL数据库中

时间:2012-11-06 15:58:17

标签: java encoding utf-8

我知道Microsoft Office使用不同的编码,当有人将文本从办公室复制并粘贴到java文本面板时,会发生什么,看起来不错。但是,然后将其存储到MySQL数据库中并检索它。它突然变成了各种垃圾拉丁字符。

我试图在存储之前将其转换为utf-8,但似乎无效。

无论如何你都可以检测到你的文字中是否有拉丁字符,所以我只需弹出一个警告就可以让用户在保存之前知道。

或者,如果无论如何都要禁用jTextField只显示UTF-8字符的所有内容,那么当用户从word中复制和粘贴时,它会自动显示所有随机代码而不是看起来很好(在开头)< / p>

示例:当用户在word中输入内容并粘贴到jTextField时,我们直接传递字符串(注意我们的sql数据库是utf8_general_ci),然后我们只是将它提取到JPanel,我们得到:

  

ÃÆ'ƒÀ   Ã¢€央行“¢ÃƒÆ'â€â,¬Å¡Ãƒâ¢šÃ,†ÃÆ'Ã’ÀšÃ,¢ÃÆ'Ã,¢Ã¢â€央行¡Ã,¬Ãâ€|Ã,¡ÃÆ'â€â,¬Å¡Ãƒâ†šÃ,¬ÃÆ'Ã’ÀšÃ,¢ÃÆ'Ã,¢Ã¢¢? ‚

1 个答案:

答案 0 :(得分:1)

我遇到过类似的问题。首先要做的是找出究竟写入数据库的内容。使用MySQL非常简单,只需登录并运行

即可
SELECT HEX( column ) FROM table;

这将为您提供已写入表的字节数。然后,您可以将an app I wrote用于此目的。从MySQL获取十六进制字符串,使用-b标志获取give it to the main class字节。你将得到一大堆输出,希望其中一个将是你原来的。

一旦你知道它的存储内容,你就有了调试的起点。