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

时间:2014-12-09 13:35:04

标签: c# winforms encoding hebrew

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

 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;

1 个答案:

答案 0 :(得分:0)

找到解决方案。由于某种原因,它现在有效,但我很肯定我在发布问题之前尝试了它并且它没有用。

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

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