gpt4 book ai didi

c# - 如何删除名称中的特殊字符,如 Frédéric?

转载 作者:行者123 更新时间:2023-11-30 13:48:25 24 4
gpt4 key购买 nike

我有一个名为 Frédéric 的联系人。

当我在站点的联系人列表中搜索它时,名称会像这样更改“Frédéric”,因为它搜索这个名称(Frédéric) 在数据库中我有名字 Frédéric

所以数据库中不会有这样的名字,它说找不到联系人。

如何获得除此名称 Frédéric. 之外的真实姓名?

我的解码方法是

public static string Decode(string text)
{
if (text == null)
{
return "";
}

string result = "";
string[] values = text.Split('@');
bool escaped = false;
try
{
for (int i = 0; i < values.Length; i++)
{
if (!escaped)
{
result += values[i].Replace("_"," ");
}
else
{
//result += System.Text.ASCIIEncoding.ASCII.GetChars(new byte[] { byte.Parse(values[i]) })[0];

}
escaped = !escaped;
}
}
catch { }
return result;
}

此处方法的参数是 Frédéric,但实际上必须是 Frédéric。

最佳答案

您的系统某处存在错误,使用所谓的 ANSI 代码页对 UTF-8 编码字符串进行解码。此代码演示了错误:

var name = "Frédéric";
var bytes = Encoding.UTF8.GetBytes(name);
var wrongName = Encoding.Default.GetString(bytes);

现在 wrongNameFrédéric

你需要做的是:

var name = "Frédéric";
var bytes = Encoding.UTF8.GetBytes(name);
var correctName = Encoding.UTF8.GetString(bytes);

Encoding.Default 因 Windows 区域设置而异。在我的计算机上,代码页是 Windows 1252,也称为 ISO 8859:1,但在世界其他地方,它可能是另一个代码页。我相信日本的 ANSI 代码页是 932,在这种情况下,错误的名称将显示为 Frテゥdテゥric

无论如何,要使用的正确编码是 UTF-8,因为您的字符串是使用该编码编码的。尝试“修复”损坏的字符串并不是一条富有成效的路径,因为它取决于执行代码的系统的 ANSI 代码页。

关于c# - 如何删除名称中的特殊字符,如 Frédéric?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com