当我查看我用i18n保存的文件时,可以使用“FïllÂllülle~”就可以了,这就是我想要的...但是代码中的方式我试图阅读这个文件的副本并将其作为String返回是这样的:
string sLine = String.Empty;
StringBuilder sHTMLText = new StringBuilder();
int nFileHandle = FileSystem.FreeFile();
sHTMLText.Append(String.Empty);
FileSystem.FileOpen(nFileHandle, sFileName, OpenMode.Input, OpenAccess.Default, OpenShare.Default, -1);
while (!FileSystem.EOF(nFileHandle))
{
sLine = FileSystem.LineInput(nFileHandle);
sHTMLText.Append(sLine);
};
FileSystem.FileClose(nFileHandle);
return sHTMLText.ToString();
但是当我调试它时,它正在破坏正确翻译的内容,如“FïllÂllülle~”并操纵它们,所以我认为我的方法不是以尊重编码的方式来做,就像我已经设置了我的计算机区域/语言设置为法语....所以如何更正我现有的代码或编写类似的东西,同样关心编码和我的计算机上设置的语言?
Thsanks
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您尝试读取以非Unicode编码保存的文件,则必须准确指定打开文件时该编码的内容。
using System;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
using (StreamReader reader = new StreamReader(@"C:\myfile.txt", Encoding.GetEncoding(1252)))
{
// read the file with the reader object.
}
}
}
指定编码后,文件将在读取时自动转换为内部字符串格式(UTF-16 LE)。请注意,如果正确指定了编码,则将旧版字符编码中的有效文件转换为Unicode将始终成功,并且没有任何困难。以遗留编码保存文件更成问题,并且要求所有源字符映射到传统编码或适当的回退机制。
将来在整个系统中独占使用Unicode往往会使事情变得更容易。依赖于正确设置的默认系统编码会创建隐藏的配置依赖关系,这可能会在任何迁移,分布式应用程序和其他情况下导致问题。