将拉丁字符转换为希伯来语编码

本文关键字:转换 希伯来语 编码 字符 丁字符 | 更新日期: 2023-09-27 18:33:38

我以前问过这个问题并得到了答案。但现在我面临着一个不同的问题。我有一个文件名。名称是:‹ ̃ˆ' ‡™...我想解码它以获得它的希伯来语值。我使用的代码:

 Encoding latinEncoding = Encoding.GetEncoding("Windows-1252");
 Encoding hebrewEncoding = Encoding.GetEncoding(862);
 byte[] latinBytes = latinEncoding.GetBytes(str);
 string hebrewString = hebrewEncoding.GetString(latinBytes);

这段代码效果很好,但不是很好。我的意思是很少有字符被解码为"?"而不是它们的希伯来语值。

所以用这段代码解码给定的名字给了我:"כרטס?חשבונו?"而不是"כרטסת חשבונות"。有这个问题的希伯来字符是:ך,ל,מ,ת。所有其他解码都很棒。

我找到了一个解决方案,但如果可能的话,我想避免它。解决方案是将给定的字符串保存到文件中,然后使用 862 编码读回文件。代码为:

string str = "‹˜ˆ‘ ‡™……";
// Get uniqe file name based on current date and time
reportFileName = DateTime.Now.ToString().Replace("/", "-").Replace(":", ";");
// set the file path
string repFilePath = parametersFolder + @"'" + reportFileName;
// save the value to a file with 1255 encoding
File.WriteAllText(repFilePath, str, Encoding.GetEncoding(1255));
// read the value back with 862 encoding
string s = File.ReadAllText(repFilePath, Encoding.GetEncoding(862));
// Delete the file
File.Delete(repFilePath);
// Save the value to a variable.
generatedFileName = s;

将拉丁字符转换为希伯来语编码

找到了一个解决方案。出于某种原因,它现在可以工作了,但我肯定我在发布问题之前已经尝试过了,但它没有用。

Encoding latinEncoding = Encoding.GetEncoding("Windows-1255");
Encoding hebrewEncoding = Encoding.GetEncoding(862);
byte[] latinBytes = latinEncoding.GetBytes(str);
string hebrewString = hebrewEncoding.GetString(latinBytes);

将字符串读取为 1255 编码而不是 1252 编码。