我要做的是将一段unicode 字符写到配置文件中,用的是
Private Declare Function WritePrivateProfileStringW Lib "Kernel32" (ByVal 
app As Long, ByVal key As Long, ByVal str As Long, ByVal fil As Long) As Long 
这个函数,
写的程序如下:
Private Sub Command1_Click() 
    Dim app As String 
    Dim key As String 
    Dim str As String 
    Dim fil As String 
    Dim ret As Long 
    fil = "C:\WuTemp\Test.ini" + vbNullChar 
    app = "MySection" + vbNullChar 
    key = "MyValue" + vbNullChar 
    str = "MyData" + vbNullChar 
    ret = WritePrivateProfileStringW(StrPtr(app), StrPtr(key), StrPtr(str), 
StrPtr(fil)) 
End Sub 
这样是正常的,但是把其中的字符串换成"شلاؤي"时,写进去之后就变成了“????”,按道理WritePrivateProfileStringW函数就是写unicode文件的,为什么写进去就是“???”呢?
我找了一篇文章 http://www.codeproject.com/KB/files/unicode_ini.aspx,上面说要在写unicode 文件之前先写文件头信息,需要这样吗?
还望高手赐教写unicode 配置文件的具体方法,多谢了。

解决方案 »

  1.   

    你的配置文件本身是unicode编码的吗?如果不是的话,先转换成unicode编码。
    最简单的话就是使用记事本(notepad.exe)打开,然后另存为,然后在编码域选择unicode,保存,确认覆盖。
      

  2.   

    配置文件是新创建的,不一定是unicode的,楼上的方法可以用,但是不可行啊,呵呵
    我要的是在代码中实现。呵呵
      

  3.   

    非Unicode编码的文件,怎么可能存储Unicode的字符呢?存储的时候必须考虑编码转换导致的缺损。
      

  4.   

    在文件头写入 0xFF FE,生成unicode格式文件...
      

  5.   

    LZ,默认是UTF-8如果我没记错的话(记错了请指教)需要转换成unicode不然就是乱码
      

  6.   

    INI文件,在没有做特别处理的情况下,都会是生成ANSI码,而非任何Unicode(包括utf-8,utf-16等等)编码