我正在尝试做一些我认为应该相当简单的事情,但我已经花了太多时间在它上面并且我尝试了几种不同的方法,我研究但无济于事.
基本上,我有一个巨大的名字列表,其中包含来自UTF8字符集的"特殊"字符.
我的最终目标是读取每个名称,然后使用URL中的该名称作为GET变量发出HTTP请求.
我的第一个目标是从文件中读取一个名称,并将其标准化以确认我可以在创建字符串并发出所有HTTP请求之前正确读写UTF8.
test1.txt我制作的文件只包含以下内容:
OWNAGE
然后我用这个C#代码读入文件.我设置StreamReader编码和Console.OutputEncodingto UTF8.
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
using (StreamReader reader = new StreamReader("test1.txt",System.Text.Encoding.UTF8))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我得到了这样的输出:

预期输出与原始文件内容完全相同.
如果我甚至不能做一个简单的读/写UTF8字符串任务,我怎么能确定我要构建的用于发出HTTP请求的字符串是否正确?
你的程序没问题(假设输入文件实际上是UTF-8).如果您调试程序并使用Watch窗口查看字符串(line变量),您会发现它是正确的.这就是你如何确定你将发送正确的HTTP请求(或者你对字符串做的任何其他事情).
您所看到的是Windows控制台中的错误.
幸运的是,它只影响光栅字体.如果您将控制台窗口更改为使用TrueType字体,例如Consolas或Lucida Console,则问题就会消失.

您可以使用"默认值"菜单项为以后的所有窗口设置此项:

| 归档时间: |
|
| 查看次数: |
11008 次 |
| 最近记录: |