当我使用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字符集中吗?
―
U+2015 水平线 和(MathSymbol)~
U+FF5E 全角波浪号。我怀疑这些字符是否在Shift-JIS
中... - JosefZ