Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符编码写入文本文件_Java_Linux_Encoding_Utf 8_Filewriter - Fatal编程技术网

Java字符编码写入文本文件

Java字符编码写入文本文件,java,linux,encoding,utf-8,filewriter,Java,Linux,Encoding,Utf 8,Filewriter,我的问题如下: public OfferFileBuilder(String clientAppName, boolean isAppend) throws IOException, URISyntaxException { String exportFileLocation = getExportedFileLocation(); File offerFile = new File(getDatedFileName(exportFileLocation+"/"+

我的问题如下:

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"));
    }
写入文本文件时出现字符编码问题。问题是字符没有显示预期值。例如,我正在写“”(可能是一个制表符),“是文本文件中显示的内容

背景资料

此数据存储在MSQL数据库中。数据库排序规则为
SQL\u Latin1\u General\u CP1\u CI\u AS
,字段为
varchar
。我来学习排序规则和类型,以确定在数据库端使用什么字符编码。值存储正确,因此这里没有问题

我的Java应用程序运行查询以从数据库中提取数据,这看起来也不错。我已经调试了代码,并在写入文件之前看到所有字符串都具有正确的表示形式

接下来,我使用
OutputStreamWriter
将文本写入.TXT文件,如下所示:

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"));
    }
现在,一旦我在Linux服务器上通过对文件运行
cat
命令打开文件,或者使用记事本++打开文件,一些字符显示不正确

我在服务器上运行了以下命令以查看其编码
locale charmap
,其中打印
UTF-8
echo$LANG
,其中打印
en_US.UTF-8
,echo$LC\u CTYPE`不打印任何内容

以下是我迄今为止所做的尝试。 我尝试更改OutputStreamWriter使用的字符编码我尝试了UTF-8和CP1252。当切换编码时,一些字符是固定的,而其他字符则不正确地显示

我的问题是: 我的OutputStreamWriter应该使用哪种编码? (奖金问题)我们应该如何避免此类问题的发生。我得到的经验法则是使用
UTF-8
,你永远不会遇到问题,但我现在不是这样


在服务器上运行
file-bi
命令显示文件是用
ascii
编码的,而不是
utf8
。完全删除文件并重新运行进程为我解决了这个问题。

使用
UTF-8
类编码如何?它专用于文本输出流。
echo$LC_CTYPE的输出是什么?
?使用记事本++时,请验证“编码”下拉菜单是否显示“无BOM的UTF-8”。(假设Linux版本与之类似,Windows上也应该如此)@andrewccoist我没有尝试过
PrintWriter
,但它继承了我现在的
Writer
using@Andreas当我运行echo$LC_CTYPE时,它实际上不打印任何内容。