gpt4 book ai didi

c# - 如何编码和解码 splinter 的中文/Unicode字符?

转载 作者:行者123 更新时间:2023-11-30 14:00:22 47 4
gpt4 key购买 nike

我试过谷歌搜索但没能找到下面这段文字所属的字符集:

具有éœé›»ç”¢ç”Ÿè£ç½®ä¹‹å½±åƒè¼¸å…¥è£ç½®

但是把<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">并将该字符串保存到 HTML 文件中,我能够正确查看中文字符:

具有靜電產生裝置之影像輸入裝置 

所以我的问题是:

  1. 我可以使用什么工具来检测这段文字的字符集?

  2. 以及如何在 C# 中正确地转换/编码/解码它们?

更新:为了完成,我更新了这个测试。

   [TestMethod]
public void TestMethod1()
{
string encodedText = "具有éœé›»ç”¢ç”Ÿè£ç½®ä¹‹å½±åƒè¼¸å…¥è£ç½®";
Encoding utf8 = new UTF8Encoding();
Encoding window1252 = Encoding.GetEncoding("Windows-1252");

byte[] postBytes = window1252.GetBytes(encodedText);

string decodedText = utf8.GetString(postBytes);
string actualText = "具有靜電產生裝置之影像輸入裝置";
Assert.AreEqual(actualText, decodedText);
}
}

最佳答案

当您将“错误”字符串保存在带有声明正确编码的元标记的文本文件中时,发生的情况是您的文本编辑器正在使用 Windows-1252 编码保存文件,但浏览器正在读取文件并解释它作为UTF-8。由于“错误”字符串是使用 Windows-1252 编码错误解码的 UTF-8 字节,因此您通过将文件编码为 Windows-1252 并解码为 UTF-8 来逆转该过程。

这是一个例子:

using System.Text;
using System.Windows.Forms;

namespace Demo
{
class Program
{
static void Main(string[] args)
{
string s = "具有靜電產生裝置之影像輸入裝置"; // Unicode
Encoding Windows1252 = Encoding.GetEncoding("Windows-1252");
Encoding Utf8 = Encoding.UTF8;
byte[] utf8Bytes = Utf8.GetBytes(s); // Unicode -> UTF-8
string badDecode = Windows1252.GetString(utf8Bytes); // Mis-decode as Latin1
MessageBox.Show(badDecode,"Mis-decoded"); // Shows your garbage string.
string goodDecode = Utf8.GetString(utf8Bytes); // Correctly decode as UTF-8
MessageBox.Show(goodDecode, "Correctly decoded");

// Recovering from bad decode...
byte[] originalBytes = Windows1252.GetBytes(badDecode);
goodDecode = Utf8.GetString(originalBytes);
MessageBox.Show(goodDecode, "Re-decoded");
}
}
}

即使解码正确,您仍然需要一种支持所显示字符的字体。如果您的默认字体不支持中文,您仍然可能看不到正确的字符。

正确的做法是弄清楚为什么您的字符串首先被解码为 Windows-1252。但有时,数据库中的数据一开始就存储不正确,您必须求助于这些游戏来解决问题。

关于c# - 如何编码和解码 splinter 的中文/Unicode字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967786/

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