gpt4 book ai didi

java - 当我使用 Java 8 创建文件时,使用 Shift-JIS 字符集,一些字符被替换为 char '?'

转载 作者:行者123 更新时间:2023-12-04 17:25:36 33 4
gpt4 key购买 nike

我在使用 Shift-JIS 字符集创建文件时遇到问题。

这是我要写入 txt 文件的文本示例:

繰戻_日経選挙システム保守2019年1月10日~;[2019年度更新]横浜第1DCコロケ―ション(2ラック)

使用 Shift-JIS 字符集,我在文件中找到两个 '?'而不是~和 ―:

繰戻_日経選挙システム保守2019年1月10日?;[2019年度更新]横浜第1DCコロケ?ション(2ラック)

使用 UTF-8 字符集,进入我找到的文件(全部正确):

繰戻_日経選挙システム保守2019年1月10日~;[2019年度更新]横浜第1DCコロケ―ション(2ラック)

这是我的代码:

package it.grupposervizi.easy.ef.etl.elaboration;

import com.nimbusds.jose.util.StandardCharset;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.io.FileUtils;

public class TestShiftJIS {

private static final String TEXT = "繰戻_日経選挙システム保守2019年1月10日~;[2019年度更新]横浜第1DCコロケ―ション(2ラック)";
private static final String DIRECTORY = "C:\\temp\\japan\\";
private static final String SHIFT_JIS = "Shift-JIS";
private static final String UTF_8 = StandardCharset.UTF_8.name();
private static final String EXTENSION = ".txt";

public static void main(String[] args) {

final List<String> charsets = Arrays.asList(SHIFT_JIS, UTF_8);
charsets.forEach(c -> {
final String fName = DIRECTORY + c + EXTENSION;
File file = new File(fName);
try {
FileUtils.writeStringToFile(file, TEXT, Charset.forName(c));
} catch (IOException e) {
throw new RuntimeException(e);
}
});

System.out.println("End Test");
}
}

您知道为什么这两个字符没有包含在 Shift-JIS 字符集中吗?

最佳答案

///编辑:

您尝试保存具有不常见(不同于默认)编码的文件。尝试更改字符编码。有关编码的更多信息 » https://en.wikipedia.org/wiki/Character_encoding

///

尝试使用:Charset.forName("CP943C")

关于java - 当我使用 Java 8 创建文件时,使用 Shift-JIS 字符集,一些字符被替换为 char '?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63706439/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com