我们正在使用一个内部使用简单的Win调用WritePrivateProfileString的工具。
我知道要映射到WritePrivateProfileString**A**或WritePrivateProfileString**W**的定义标志UNICODE
我在给INI文件写一些东西,这个文件以前不存在。
而且它在某些系统上的表现也不同。为什么?
例如: ASCI中的字符"§“是A7 (十六进制),有时被写成Unicode format C2 A7 (十六进制)。但只有在某些系统上,我不知道为什么?!写ANSI或UNICODE的系统条件是什么?
在编写文件之前,我试图先创建文件,甚至试图通过添加一些字符来定义格式,因为我认为WritePrivateProfileString在内部使用isTextUnicode,但在这里没有机会。
有没有人用正确的方式理解这个API文档:
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa
如果文件是使用Unicode字符创建的,则函数将Unicode字符写入文件。否则,函数将写入ANSI字符。
我不能完全同意这里的文件。我知道我在这里一定错了;-)或者怎么做正确的?
我们所想要的就是在任何情况下都要写到任何系统,只是普通的ANSI到INI文件。(我不能将其更改为WritePrivateProfileString**A**方法,因为我们使用的工具仅在内部使用WritePrivateProfileString函数。)无论如何,它工作的90%的PC是正确的,但在某些情况下,我们仍然在INI文件中的unicode字母。
我也知道ASCI不是最先进的,但是我们正在执行一些CRC--计算INI值,而"A7“不是"C2 A7",这导致了计算失误,这就是为什么我们需要普通的ASCII格式的背景。
谢谢你的帮助。
发布于 2020-09-21 11:33:04
WritePrivateProfileStringW版本。DllImport("kernel32.dll",CharSet = CharSet.Unicode,SetLastError = true,EntryPoint = "WritePrivateProfileStringW")公共静态extern bool WritePrivateProfileString(string lpAppName,string lpKeyName,string lpString,string lpFileName);
Encoding.Unicode); File.WriteAllText(ini_file_path,";您的评论\r\n“)
建议在开头处使用空白/注释行。至少写"\r\n"。
https://stackoverflow.com/questions/63959305
复制相似问题