为什么我的字符串输出打印出奇怪的字符?

时间:2017-04-02 15:00:49

标签: c# arrays listview encoding utf-8

所以我有这个方法打印出从文本文件到列表视图的几行但是每当它执行时它会使用诸如“Åå,Ää,Öö”之类的字符,并使它们成为奇怪的符号,如三角形和东西。 我尝试将它们转换为UTF-8字符,但它给了我相同的输出。

private void btnSort_Click(object sender, EventArgs e)
{
    //Convert to utf8

    string[] Accounts = File.ReadAllLines(filePath); // if null do something

    foreach (string account in Accounts)
    {
        ListViewItem lvi = new ListViewItem(account);
        listView1.Items.Add(lvi);
    }

}

这就是文本文件列表的样子

  

Gräsklippare@hotmail.com
Åkerström@gmail.com

是的,就是这样。

2 个答案:

答案 0 :(得分:1)

File.ReadAllLines有一个需要编码的重载。使用该文件使用的任何编码(显然不是UTF8)来调用它

答案 1 :(得分:0)

正如@KevinGosse指出的那样,File.ReadAllLines()有一个带有编码的重载,这组字符所需的编码是UTF-7

工作代码

private void btnSort_Click(object sender, EventArgs e)
        {
            //Convert to utf8

            string[] Accounts = File.ReadAllLines(filePath, Encoding.UTF7); // if null do something

            foreach (string account in Accounts)
            {
                ListViewItem lvi = new ListViewItem(account);
                listView1.Items.Add(lvi);
            }

        }