首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用特殊字符(如en破折号、左引号等)读写文件的编码是什么?

用特殊字符(如en破折号、左引号等)读写文件的编码是什么?
EN

Stack Overflow用户
提问于 2018-05-25 19:27:38
回答 4查看 1.4K关注 0票数 3

我正在读取包含特殊字符的csv文件,例如long en dash -、左双引号“和右双引号”,而且我无法找到正确读取和写入这些字符的正确方法。我以为它是UTF8或Unicode,但它将它们读写为正方形或?带着钻石。打开notepad++中的文件以确认。也许还需要另一种特定的编码?下面是我到目前为止使用的代码,用不同的编码尝试了几种不同的代码。

代码语言:javascript
运行
复制
string[] lines = File.ReadAllLines(filePathTxt.Text, Encoding.UTF8);
...
Stream s = new FileStream(filePath, FileMode.Append);
StreamWriter sw = new StreamWriter(s, Encoding.UTF8, 1000, true);

投入:

调查-公众

文件:,“A”

出柜

调查�公众

文档:,�A�

当调试器读入字符串数组时,还会显示调试器的问题。

编辑:我也尝试过Unicode。我使用的是NotePad++,Win 10。问题肯定在读取步骤中,因为如果我添加以下行来手动写入一行数据,如下所示:

代码语言:javascript
运行
复制
 sw.WriteLine("Surveys – Public");

这一行很好地写了破折号,所以它是在从源csv开始读取文件时,在那里字符会被弄乱。我试着用几个不同的编码来阅读,而NotePad++只是将csv显示为ANSI。

EN

Stack Overflow用户

发布于 2018-05-25 20:16:27

哦,天哪,我现在想出来了,这看起来很傻,但事情就是这样的。

NotePad++状态栏显示为ANSI。一开始,我没有提供读或写的编码。

在查看要使用的编码选项时,我发现在默认编码中有一个选项:

代码语言:javascript
运行
复制
string[] lines = File.ReadAllLines(filePathTxt.Text, Encoding.Default);

但是我从来没有尝试过这种方法,因为没有指定使用哪种编码必须是默认的,对吧?嗯,我想不是因为实际上在读和写的时候给了它这个,使它现在正常工作了。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50535715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档