【发布时间】:2016-09-04 15:49:27
【问题描述】:
我正在尝试从 .ini 文件中读取外来字符。 这是我正在使用的方法
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string Section,
int Key,
string Value,
[MarshalAs(UnmanagedType.LPArray)] byte[] Result,
int Size,
string FileName);
public static string[] GetEntryNames(string section, string iniPath)
{
for (int maxsize = 500; true; maxsize *= 2)
{
byte[] bytes = new byte[maxsize];
int size = Imports.GetPrivateProfileString(section, 0, "", bytes, maxsize, iniPath);
if (size < maxsize - 2)
{
string entries = Encoding.ASCII.GetString(bytes, 0,
size - (size > 0 ? 1 : 0));
Console.WriteLine("Entries: " + entries.Split(new char[] { '\0' })[3]);
return entries.Split(new char[] { '\0' });
}
}
}
我正在使用Encoding.ASCII,但显然GetPrivateProfileString 不是。从它出来的字节可能需要编码。我该怎么做?
编辑:示例
这将打印:Tavar?而不是塔瓦雷
【问题讨论】:
-
你确定它没有正确读取,而不是只是
Console.WriteLine? -
@LegionMammal978 是的。将其设置在标签上并得到相同的结果
-
@JohnP。尝试使用
Encoding.UTF8或Encoding.GetEncoding("iso-8859-1")作为法语字符 -
@Xiaoy312 回答问题,以便我接受答案。你值得拥有
-
@JohnP。我贴出来了。
标签: c# file encoding char byte