[英]Java is store wrongly spanish characters
我有一个 Java 应用程序,它正在加载一个 csv 文件,其中包含我需要在 MySQL 数据库中导入的一些内容。
问题是,对于一些西班牙语内容,如 ñ 或 á é í ó ú,应用程序返回: EL ESPA OL
数据库默认集合是latin1 - default collection
我也尝试将其更改为其他人,例如 utf8,但结果始终相同。
我导入文件的方式是:
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
System.out.println("*** Importing file **** " + file);
try {
String line;
int i = 0;
while ((line = br.readLine()) != null) {
final String[] parts = line.split(",");
if(parts != null && parts.length > 0 && !parts[0].equalsIgnoreCase("")){
System.out.println("Line: " + i++ + " Text: " + line);
...
...
当我向后端发出请求时,我发送了以下标头:
accept: application/json
accept-encoding: gzip, deflate, br
accept-language: es-419,es;q=0.9,en;q=0.8
content-type: application/json
尝试的事情:
默认排序规则就是这样 - 默认值。 除非您指定排序规则,否则您的新表采用当前默认值。
如果您不重新创建或修改现有表,它们将保持在latin1
编码。
你在 Windows 上运行吗? 您的 JRE 默认代码页设置为什么?
我接触 Java 已经有一段时间了,但我曾经在多字节字符方面遇到过可怕的麻烦,因为我会在 Linux 上开发,然后将代码转移到 Windows 上……突然之间,到处都是时髦的 字符。
这可能在某些时候发生了变化,但在 Linux 和 OSX 上,JRE 以默认编码作为 UTF-8 .. 开始,而在 Windows 上它使用系统代码页。 这对我来说是 cp1252 - 绝对不是国际的。
尝试将此系统属性打印到控制台,看看您是否发生了这种情况。
System.getProperty("file.encoding")
您可以像往常一样在启动时使用-D
参数更改 this 的值,例如
java -Dfile.encoding="UTF-8" -jar myJar.jar
...或者,正如@ControlAltDel 所说,当您在流 API 中有选项时,始终指定编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.