gpt4 book ai didi

c# - 编码不转换

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:02 24 4
gpt4 key购买 nike

ASP.NET 页面 (ashx) 收到 GET使用 UTF8 字符串请求。它读取带有 Windows-1255 数据的 SqlServer 数据库。

我似乎无法让他们一起工作。我使用了在 SO 上收集的信息(主要是 Convert a string's character encoding from windows-1252 to utf-8 )以及 msdn关于这个问题。

当我通过下面的函数运行任何东西时 - 它总是以开始时的相同方式结束 - 根本没有转换。

有什么地方做错了吗?

编辑

我特别想做的事情( getData 返回 Dictionary<int, string> ):

getData().Where(a => a.Value.Contains(context.Request.QueryString["q"]))

结果为空,除非我发送“中性”字符,例如“'”或“,”。

代码

    string windows1255FromUTF8(string p)
{
Encoding win = Encoding.GetEncoding(1255);
Encoding utf8 = Encoding.UTF8;

byte[] utfBytes = utf8.GetBytes(p);
byte[] winBytes = Encoding.Convert(utf8, win, utfBytes);
return win.GetString(winBytes);
}

string UTF8FromWindows1255(string p)
{
Encoding win = Encoding.GetEncoding(1255);
Encoding utf8 = Encoding.UTF8;

byte[] winBytes = win.GetBytes(p);
byte[] utfBytes = Encoding.Convert(win, utf8, winBytes);
return utf8.GetString(utfBytes);
}

最佳答案

函数没有问题,只是没用。

函数的作用是将字符串编码为字节,将数据从一种编码转换为另一种编码,然后将字节解码回字符串。除非字符串包含无法使用 windows-1255 编码进行编码的字符,否则返回值应与输入相同。

.NET 中的字符串没有编码。如果您从使用例如 UTF-8 对文本进行编码的来源获取字符串,一旦它被解码为字符串,它就不再具有该编码。当目标具有特定编码时,您无需对字符串执行任何操作即可使用它,无论您使用的是什么库,该字符串都将负责编码。

关于c# - 编码不转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303428/

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