Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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/8/grails/5.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
C# .NET:StreamReader无法识别°;人物_C#_.net_Regex_Unicode_Utf 8 - Fatal编程技术网

C# .NET:StreamReader无法识别°;人物

C# .NET:StreamReader无法识别°;人物,c#,.net,regex,unicode,utf-8,C#,.net,Regex,Unicode,Utf 8,我正在尝试运行正则表达式来定位度字符(\u00B0 |\u00BA degrees,除了定位另一种形式的'-->\u00B4)。我在读经纬度DMS坐标,像这样:12º30'23.256547 问题在于我读取文件的方式,因为我可以手动插入如下字符串(格式为纬度、经度、描述): 常量字符串myTestString=@“12º30'23.256547”“S,12º30'23.256547”“W,某处” 我的正则表达式与预期的匹配-我还可以看到º值,当我使用streamreader时,我看到� 对于所有

我正在尝试运行正则表达式来定位度字符(\u00B0 |\u00BA degrees,除了定位另一种形式的'-->\u00B4)。我在读经纬度DMS坐标,像这样:12º30'23.256547

问题在于我读取文件的方式,因为我可以手动插入如下字符串(格式为纬度、经度、描述):

常量字符串myTestString=@“12º30'23.256547”“S,12º30'23.256547”“W,某处”

我的正则表达式与预期的匹配-我还可以看到º值,当我使用streamreader时,我看到� 对于所有无法识别的字符(º符号作为无法识别的字符之一包含)

我试过:

            var sr = new StreamReader(dlg.File.OpenRead(), Encoding.UTF8);
            var sr = new StreamReader(dlg.File.OpenRead(), Encoding.Unicode);
            var sr = new StreamReader(dlg.File.OpenRead(), Encoding.BigEndianUnicode);
除了默认的ASCII之外


无论我用哪种方式读取文件,最后都会得到这些特殊字符。任何建议都将不胜感激!!

您需要确定文件保存的编码,并在使用streamreader读取文件时使用这些编码

如果它是使用常规文本编辑器创建的,我猜默认编码是Windows-1252或ISO-8859-1

在ISO-8859-1中,度符号是0xBA,超出了7bit ASCII表。我不知道Encoding.ASCII如何解释它

否则,如果可能的话,只需确保将文件保存为UTF-8就可以了


当您在代码中定义字符串时,它工作的原因是.NET将始终使用内部编码(UCS-2?)的字符串,因此StreamReader所做的是使用创建StreamReader时指定的编码将它从文件中读取的字节转换为内部编码。

您已经尝试了各种编码…但可能不是正确的编码。您不应该只是猜测编码-找出它真正使用的编码,然后使用它
StreamReader
本身非常好。它可以处理您给它的任何编码,但它必须与写入文件时使用的编码匹配

文件从哪里来?是什么写的


如果它是用记事本写的,很可能是使用
编码。默认值
,这是系统的默认编码(即,它会因机器而异)。如果可能的话,将创建文件的内容更改为使用单一标准编码-我个人非常喜欢UTF-8。

是的,你是对的,默认值是Unicode,我的错误…我担心保存在记事本中可能会导致此问题…但我尝试了其他格式,遇到了相同的问题-我也尝试了我将添加到的内容下面是一个新线程…您可以在使用“文件”时选择要使用的编码→ 另存为…”在记事本中。使用UTF-8而不是默认的ANSI,并将Encoding.UTF8传递给StreamReader。它应该可以工作。谢谢!这确实可以工作。现在就可以了,但我最终需要开发一个解决方案,因为这将由客户端使用。再次感谢!如果您无法控制文档的编码,您将不得不尝试使用ide直接识别编码。但这永远不会是100%准确。请看以下问题:我尝试了这个,但没有帮助: