读取ini文件中的中文乱码问题

songxinbo 2006-10-02 09:37:40
我现在用API中的GetPrivateProfileString函数来读取ini文件。但是当有中文时,会出现乱码。
请问怎么解决?
或者C#还有什么好的读取ini文件的方法可以解决中文乱码问题?
在线等,多谢
...全文
2020 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XuFrank 2006-10-09
  • 打赏
  • 举报
回复
Mark一下
liutaoyue 2006-10-08
  • 打赏
  • 举报
回复
恩,我一直遇到这个问题,所以尽量都没用中文。这下解决了。谢谢lovevsnet!
lovevsnet 2006-10-03
  • 打赏
  • 举报
回复
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath);
按我的方法改一下,刚才帮你调试了一下,返回中英文正常
diandian82 2006-10-02
  • 打赏
  • 举报
回复
如果按文本文件读的话可以指定字符集,但如果调用API的话,就不知道了,我一般在INI里面不用中文
songxinbo 2006-10-02
  • 打赏
  • 举报
回复
多谢!
jointan 2006-10-02
  • 打赏
  • 举报
回复
我用下面的方法读出来的不是乱码
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileString")]
private static extern int GetPrivateProfileString(
string ApplicationName, string KeyName, string DefaultString,
[MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer, int nSize, string FileName);
private void button2_Click(object sender, EventArgs e)
{
int size = 260;
byte[] buff = new byte[size ];
int ret = GetPrivateProfileString("global", "company", "", buff, size, "C:\\water.ini");
if (ret < 0)
return;
byte[] arry = new byte[ret];
for (int i = 0; i < ret; i++)
{
arry[i] = buff[i];
}
this.Text = System.Text.Encoding.Default.GetString(arry);
}

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧