java - Linux 和 MySQL 中的编码问题

标签 java mysql jakarta-ee jboss character-encoding

我已经在 Windows 机器上开发了我的 Java/EE 程序,并且一切都在 Windows 中完美运行,但是当我在 Linux 机器中将 WAR 安装到 Jboss 时,当我导入 csv 文件时,我遇到了 MySQL 的编码问题。 Csv 文件编码为 ISO-8859-1,我导入的文件编码为 ISO-8859-1。 MySQL 似乎没有将字符串编码为 UTF-8,数据库中使用的编码是什么。

最佳答案

如果问题发生在您读取文件时(而不是在将数据插入数据库时​​),我猜是 file.encoding 系统属性关闭了。如果您创建阅读器而不指定编码,它将使用 file.encoding 作为默认值。因此,如果您的 Linux 机器使用 UTF-8 作为其系统编码,那么非 ASCII-7 字符将会造成麻烦。

您可以通过将 LC_ALL 环境变量设置为某个适当的值来全局更改系统的默认编码(我认为您可以使用 en_US.ISO-8859-1 ,但请查看手册),或者您可以通过在命令行上指定来在本地为 JVM 实例更改它:

java -Dfile.encoding=ISO-8859-1 -jar yourapp.jar

如果您可以更改读取 CSV 的代码,我假设您从 InputStreamReader 读取(直接或间接) - 只需为构造函数提供正确的 CharSet/CharSetDecoder 就完成了。 (您可能还想使这些东西可配置 - 但我假设您可以自己解决这个问题。)

关于java - Linux 和 MySQL 中的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986254/

相关文章:

java - 仅为 Maven 设置 JAVA_HOME,无论我的代码如何

java - 计算树中节点的方法

php - 我在 MySQL 中存储 token 时遇到困难

java - 从 MYSQL 数据库中选择 DISTINCT

mysql - 删除没有主键的表中的重复项(不使用临时表)。

java - 通过 EntityManager 查找在 JSF 页面上使用 AJAX 设置标签

java - ZK 8.5.0如何重写按钮小部件setLabel函数

java - Tomcat 不排除在 tomcat.util.scan.StandardJarScanFilter.jarsToSkip 中指定的 JAR

java - 为什么 Java EE 是可扩展的?

spring - 使用 spring mvc3 @ResponseBody 有 415 Unsupported Media Type 为什么?