我的问题如下:
写入文本文件时出现字符编码问题。问题是字符没有显示预期值。例如我正在写''(可能是Tab字符),'Â'是文本文件中显示的内容。
背景资料
此数据存储在MSQL数据库中。数据库排序规则为varchar
,字段为OutputStreamWriter
。我来学习排序规则和类型确定在数据库端使用什么字符编码。值存储正确,因此没有问题。
我的Java应用程序运行查询以从数据库中提取数据,这也看起来不错。我已经调试了代码,并且在写入文件之前看到所有字符串都有正确的表示。
接下来,我使用public OfferFileBuilder(String clientAppName, boolean isAppend) throws IOException, URISyntaxException {
String exportFileLocation = getExportedFileLocation();
File offerFile = new File(getDatedFileName(exportFileLocation+"/"+clientAppName+"_OFFERRECORDS"));
bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(offerFile, isAppend), "UTF-8"));
}
将文本写入.TXT文件,如下所示:
cat
现在,一旦我通过在文件上运行locale charmap
命令打开Linux服务器上的文件或使用notepad ++打开文件,一些字符显示不正确。
我在服务器上运行了以下命令,以查看其编码UTF-8
,其中打印echo $LANG
,en_US.UTF-8
打印UTF-8
,而回显$ LC_CTYPE`则不打印任何内容。
这是我到目前为止所尝试的内容。 我试图改变OutputStreamWriter使用的字符编码我尝试过UTF-8和CP1252。当切换编码时,某些字符是固定的,而其他字符则不正确地显示。
我的问题是这样的: 我的OutputStreamWriter应该使用哪种编码? (奖金问题)我们应该如何避免这样的问题发生。我提供的经验法则是使用{{1}},你永远不会遇到问题,但现在情况并非如此。
答案 0 :(得分:0)
在服务器上运行file -bi
命令显示该文件使用ascii
而不是utf8
进行编码。完全删除文件并重新运行该过程为我解决了这个问题。