我在MYSQL数据库中遇到了诸如í、ó、ñ等特殊字符的问题。
我读了很多关于字符集、排序规则、utf和son的文章,但我可能无法正确地将其应用于这个问题。我不确定问题是我的表,还是在读取源文件和编码时。我正在开发一个生成特定报告的接口
在这里,我简要解释了问题发生时的过程
- 有一个表,其中包含所请求的Excel文件的路径文件
- 我的代码采用该路径,使用JXL库打开文件
- 然后,它开始读取代码中指示的每个单元格,并将数据导出到所指示的表中(这是表中显示的位置�在每个特殊字符中)
- 数据被正确地导出到多个表中,这没有问题,只是用这个替换了特殊字符�
所以,经过研究,我尝试了这个
- 当我使用MYSQL工作台时,我已经将排序规则中的每个表从utf8-default更改为utf8-utf8_spanish_ci和utf8-utf8_span sh_ci
- 我还尝试将排序规则更改为utf16-默认排序规则、utf_spanish_ci、bin等
- 此外,我还尝试过使用utf32排序规则
- 对其进行编码的netbeans已正确设置为utf-8
-
我试着探索连接到MYSQL的JAVA函数,我正在使用这个连接,但我没有发现任何关于编码的东西:
private Connection conecta=null; String Driver="com.mysql.jdbc.Driver"; String Url="jdbc:mysql://XXX.XXX.XXX.XX/BLAABLA"; Class.forName(Driver); conecta=DriverManager.getConnection(Url,User,Password);
-
当我手动插入包含特殊字符的数据时,数据库会在需要时正确显示,但当我尝试使用前面描述的自动插入选项(使用jxl库等读取文件)时�事情
-
我在stackoverflow中找到了一些有用的答案,但都与php、html、xml等特定情况有关。所有关于java的答案都与utf8排序规则有关
所以我希望你能给我一些帮助。
我整理得不对吗?,我应该直接在控制台上尝试一些奇怪的东西吗?mysql工作台是在禁止什么吗?
我对各种建议都持开放态度,但如果答案是"你必须使用另一个库,因为jxl无法使用它",请考虑我的项目即将完成,用另一个图书馆重新做这件事可能会像我预期的那样花更多的时间。请注意,如果JXL是问题所在,那么可能还有其他问题。没有什么是不可能的,对吧?
谢谢你抽出时间。
Excel文件默认使用windows-1255(Cp1255)编码。因此,当你从excel文件中读取这些字节时,你需要用那个字符集处理它们,然后用utf8存储它们。