首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WritePrivateProfileString -是不可预测的

WritePrivateProfileString -是不可预测的
EN

Stack Overflow用户
提问于 2020-09-18 16:14:19
回答 2查看 1.2K关注 0票数 2

我们正在使用一个内部使用简单的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格式的背景。

谢谢你的帮助。

EN

Stack Overflow用户

发布于 2020-09-21 11:33:04

  1. 总是使用WritePrivateProfileStringW版本。

DllImport("kernel32.dll",CharSet = CharSet.Unicode,SetLastError = true,EntryPoint = "WritePrivateProfileStringW")公共静态extern bool WritePrivateProfileString(string lpAppName,string lpKeyName,string lpString,string lpFileName);

  1. 当INI文件不存在时,使用Unicode文件标记创建它(前两个字节FF FE)。通过这种方式,所有字符串都存储为Unicode。若要创建空白ini文件,可以使用以下命令:

Encoding.Unicode); File.WriteAllText(ini_file_path,";您的评论\r\n“)

建议在开头处使用空白/注释行。至少写"\r\n"

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63959305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档