gpt4 book ai didi

c# - 将 Latin 1 编码的 UTF8 转换为 Unicode

转载 作者:太空狗 更新时间:2023-10-30 00:09:22 25 4
gpt4 key购买 nike

我试图将以 UTF8 编码的数据库从它的外观转换为 Windows 1251 编码(不要问,但我需要这样做)。 db 中的所有俄语编码字符都显示为 абвгдÐ。当我将它们从数据库中拉出到我的 C# 应用程序中,放入字符串中时,我仍然看到 абвгдÐ。无论我尝试如何将此字符串解释为 UTF8 编码字符串,它似乎都被解释为 latin1 单字节字符串,而且我没有看到我的文本显示为俄语。我基本上需要做的是将这个 latin1 looking-utf8 编码的字符串转换为 Unicode,以便我可以稍后将其转换为 1251,但我未能成功完成此操作。有人有什么想法吗?

最佳答案

Encoding.UTF8.GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(s))

现在您有一个包含西里尔字母的普通 Unicode 字符串。

请注意,您的“Latin-1”错误编码字符串可能实际上是“Windows 代码页 1252”错误编码字符串;我无法从给定的示例中分辨出来,因为它不使用两种编码之间不同的任何字符。如果是这种情况,请改用 GetEncoding(1252)

此外,这还假设是数据库的内容出了问题。如果数据库应该存储 UTF-8 字符串,但您将它们拉出来就好像它们是 Latin-1(或代码页 1252,因为它是系统代码页)那么您真的需要重新配置数据访问层以设置正确的编码。如果您使用的是 SQL Server,最好开始使用 NVARCHAR。

关于c# - 将 Latin 1 编码的 UTF8 转换为 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1430513/

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