可能重复:
在C#中确定字符串的编码
许多文本编辑器(如Notepad ++)可以检测任意文件的编码.我可以在C#中检测到文件的编码吗?
可能重复:
在C#中确定字符串的编码
我相信,如果我创建一个字符串,它默认为UTF8,但是如果字符串是在其他地方创建的,我想在处理之前更加安全并检查它的编码是什么我看不到任何简单的方法来使用字符串或编码类.我错过了什么或者C#字符串总是UTF8,不管是什么?
有没有办法确定C#/ .NET中的文本格式
这样的事情会非常有用.
public TextFormat TextTools.GetTextFormat(string text);
switch(TextTools.GetTextFormat(mystring))
{
case TextFormat.RichText: break;
case TextFormat.PlainText: break;
}
Run Code Online (Sandbox Code Playgroud)
我在msdn上四处寻找,但找不到这样的工具
我遇到了一个情况下SQL服务器可以存储"索菲亚"和"索菲亚"是两个不同的字符串,但在TSQL比较时,他们是不管逐份使用,即使二进制分页相同:
CREATE TABLE #R (NAME NvarchAR(255) COLLATE SQL_Latin1_General_CP1_CI_AS)
INSERT INTO #R VALUES (N'sofia')
INSERT INTO #r VALUES (N'?????')
SELECT * FROM #r WHERE NAME = N'?????'
sofia
?????
(2 row(s) affected)
IF '?????' = 'sofia' COLLATE SQL_Latin1_General_CP1_CI_AS
SELECT 'Values are the same'
ELSE
SELECT 'Values are different'
-------------------
Values are the same
(1 row(s) affected)
IF '?????' = 'sofia' COLLATE SQL_Latin1_General_CP437_BIN
SELECT 'Values are the same'
ELSE
SELECT 'Values are different'
-------------------
Values are the same
(1 row(s) affected)
I …Run Code Online (Sandbox Code Playgroud) 我有一组markdown文件要传递给jekyll项目,需要找到它们的编码格式,即使用程序或API的带有BOM的UTF-8或没有BOM或ANSI的UTF-8。
如果我通过文件的位置,则必须列出文件,读取并作为结果产生编码。
是否有任何代码或API?
我已经尝试了有效方法中提到的用于流阅读器的sr.CurrentEncoding来找到任何文件的Encoding,但是结果随notepad ++结果的不同而不同。
还试图用https://github.com/errepi/ude(Mozilla的通用字符检测器),如建议https://social.msdn.microsoft.com/Forums/vstudio/en-US/862e3342-cc88-478f- bca2-e2de6f60d2fb / detect-encoding-of-file?forum = csharpgeneral,方法是在c#项目中实施ude.dll,但结果不如notepad ++那样有效,文件编码显示为utf-8,但从程序,结果是带有BOM的utf-8。
但是我应该从两种方法都得到相同的结果,那么问题出在哪里呢?
我的问题很简单:.net编码中的字符串是否不可知?
我问这个是因为当我摄取一个我知道用某些windows-1252代码页元素(即智能引号)编码的xml文件时,在调试器中查看持有我的xml的字符串似乎想要解析单个"智能引号" "到一个带有问号的三角形.这让我想知道.NET是否断言持有我的XML的字符串是UTF8,因此无法解决差异.
这是一个问题,如果是这样,因为如果字符串被转换,那么我的web服务意味着从我的文本中擦除窗口智能引号将失败,因为它无法识别三角形/问号标记.
请帮忙.
如何检查字符串是否只包含字符,可以在ISO 8859-1中成功编码?或换句话说 - 如何在字符串中找到"非法"/"非ISO 8859-1兼容"字符?