相关疑难解决方法(0)

如何比较"看起来相似"的Unicode字符?

我陷入了一个令人惊讶的问题.

我在我的应用程序中加载了一个文本文件,并且我有一些逻辑比较了μ的值.

我意识到,即使文本相同,比较值也是错误的.

 Console.WriteLine("?".Equals("µ")); // returns false
 Console.WriteLine("µ".Equals("µ")); // return true
Run Code Online (Sandbox Code Playgroud)

在后面的行中,字符μ被复制粘贴.

但是,这些可能不是唯一像这样的字符.

在C#中是否有任何方法来比较看起来相同但实际上不同的字符?

.net c# string unicode string-comparison

94
推荐指数
9
解决办法
1万
查看次数

.NET的String.Normalize做什么?

关于String.NormalizeMSDN文章简单说明:

返回一个新字符串,其二进制表示形式为特定的Unicode规范化形式.

有时也会提到"Unicode规范化形式C".

我只是想知道,这是什么意思?这个功能在现实生活中有用吗?

.net string

70
推荐指数
4
解决办法
2万
查看次数

如何将Unicode字符转换为其ASCII等效字符

这是问题所在:

在C#中,我从传统的ACCESS数据库中获取信息.在将内容交给我之前,.NET会将数据库的内容(在此问题的情况下为字符串)转换为Unicode.

如何将此Unicode字符串转换回其ASCII等效字符串?


编辑
Unicode char 710确实是MODIFIER LETTER CIRCUMFLEX ACCENT.这个问题更准确一点:

 -> (Extended) ASCII character ê (Extended ASCII 136) was inserted in the database.
 -> Either Access or the reading component in .NET converted this to U+02C6 U+0065
    (MODIFIER LETTER CIRCUMFLEX ACCENT + LATIN SMALL LETTER E)
 -> I need the (Extended) ASCII character 136 back.


这是我尝试过的(我现在看到为什么这不起作用......):

string myInput = Convert.ToString(Convert.ToChar(710));
byte[] asBytes = Encoding.ASCII.GetBytes(myInput);
Run Code Online (Sandbox Code Playgroud)

但这不会导致94而是一个值为63的字节...
这是一个新的尝试,但它仍然不起作用:

byte[] bytes = Encoding.ASCII.GetBytes("ê");
Run Code Online (Sandbox Code Playgroud)


Soltution
由于csgerobzlm指向正确的方向我在这里解决了问题.

.net c# unicode ascii

12
推荐指数
1
解决办法
7万
查看次数

替换C#中的字符(ascii)

我收到了一个包含以下字符的文件:à,è,ì,ò,ù - À.我需要做的是用普通字符替换那些字符,例如:à= a,è= e等......这是我的代码到目前为止:

StreamWriter sw = new StreamWriter(@"C:/JoinerOutput.csv");
string path = @"C:/Joiner.csv";
string line = File.ReadAllText(path);

if (line.Contains("à"))
{
    string asAscii = Encoding.ASCII.GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(Encoding.ASCII.EncodingName, new EncoderReplacementFallback("a"), new DecoderExceptionFallback()), Encoding.UTF8.GetBytes(line)));
    Console.WriteLine(asAscii);
    Console.ReadLine();

    sw.WriteLine(asAscii);
    sw.Flush();
}
Run Code Online (Sandbox Code Playgroud)

基本上,这会在文件中搜索特定字符,并将其替换为另一个字符.我遇到的问题是我的if语句不起作用.我该如何解决这个问题?

这是输入文件的示例:

Dimàkàtso Mokgàlo
Màmà Ràtlàdi
Koos Nèl
Pàsèkà Modisè
Jèrèmiàh Morèmi
Khèthiwè Buthèlèzi
Tiànà Pillày
Viviàn Màswàngànyè
Thirèshàn Rèddy
Wàdè Cornèlius
ènos Nètshimbupfè

如果使用,则输出为:line = line.Replace('à','a'); :

Ch�rl�n� Kirst�n
M�m� R�tl�di
Koos N�l
P�s�k� Modis�
J�r�mi�h Mor�mi
Kh�thiw� Buth�l�zi
Ti�n� Pill�y
Vivi�n M�sw�ng�ny� …

c# ascii

9
推荐指数
3
解决办法
2万
查看次数

如何从剪贴板中获取正确编码的HTML?

有没有人注意到如果你从剪贴板中检索HTML,它会得到错误的编码并注入奇怪的字符?

例如,执行如下命令:

string s = (string) Clipboard.GetData(DataFormats.Html)
Run Code Online (Sandbox Code Playgroud)

结果如下:

<FONT size=-2>  <A href="/advanced_search?hl=en">Advanced 
Search</A><BR>  <A href="/preferences?hl=en">Preferences</A><BR>  <A 
href="/language_tools?hl=en">Language 
Tools</A></FONT>
Run Code Online (Sandbox Code Playgroud)

不确定MarkDown将如何处理它,但上面的结果标记中有奇怪的字符.

似乎该错误与.NET框架有关.您认为从剪贴板获取正确编码的HTML的最佳方法是什么?

c# clipboard encoding winforms

6
推荐指数
1
解决办法
5764
查看次数

标签 统计

c# ×4

.net ×3

ascii ×2

string ×2

unicode ×2

clipboard ×1

encoding ×1

string-comparison ×1

winforms ×1