gpt4 book ai didi

C# 编码。将拉丁语转换为希伯来语

转载 作者:太空狗 更新时间:2023-10-29 20:55:21 25 4
gpt4 key购买 nike

我正在尝试获取并解析一个用希伯来语编写的在线 excel 文档,但不幸的是使用了非希伯来语编码。

例如,我尝试使用 C# 代码将以下字符串:“âìéåï_1”作为第一个工作表名称转换为希伯来语,但我无法这样做。

我知道上面是可转换的,因为当我在 NotePad++ 中打开它并选择编码/字符集/希伯来语/Windows 1255 时,我可以看到:“גליון_1”,这是上述字符串的正确希伯来语表示。

我正在使用下面的代码

            string str = "âìéåï_1";

Encoding windows = Encoding.GetEncoding("Windows-1255");
Encoding ascii = Encoding.GetEncoding("Windows-1252");
byte[] asciiBytes = ascii.GetBytes(str);
byte[] windowsBytes = Encoding.Convert(ascii, windows, asciiBytes);

char[] windowsChars = new char[windows.GetCharCount(windowsBytes, 0, windowsBytes.Length)];
windows.GetChars(windowsBytes, 0, windowsBytes.Length, windowsChars, 0);
string windowsString = new string(windowsChars);

我假设原始字符串的编码是 Windows-1252,因为当我将它粘贴到 NotePad++ 并将编码更改为 Windows-1252 时,字符串保持不变...

我可能在这里做错了什么,有人知道如何正确转换上面的内容吗?

谢谢,

米奇

最佳答案

const string Str = "âìéåï_1";

Encoding latinEncoding = Encoding.GetEncoding("Windows-1252");
Encoding hebrewEncoding = Encoding.GetEncoding("Windows-1255");

byte[] latinBytes = latinEncoding.GetBytes(Str);

string hebrewString = hebrewEncoding.GetString(latinBytes);

希伯来语字符串:

גליון_1

在您提供的示例中,“Window-1252”实际上不是 ASCII,它是扩展的 ASCII,并且出于某种原因,使用这两种编码的 Encoding.Convert 无法转换扩展范围的 ASCII,因此所有 +127字符被转换为 63(即?)。当从一个扩展的 ASCII 字符 byte[]“转换”到另一个时,我希望字节是相同的,只有当您将它们转换为 .Net unicode 字符串时我才希望它们不同。不确定为什么 Convert 将 +127 个字符转换为“?”。

关于C# 编码。将拉丁语转换为希伯来语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236550/

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