winapi - GetPrivateProfileString 奇数

标签 winapi unicode encoding ini

我只是想从 .NET 调用 kernel32 中的 GetPrivateProfileString 和 GetPrivateProfileSection,但遇到了一些我不明白的奇怪问题。

让我们从这个咒语开始:

    Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As String, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString() As Char, _
    ByVal nSize As Int32, _
    ByVal lpFileName As String) As Int32

如果我传递一个 lpApplicationName(部分),没有 lpKeyName 和 lpDefault,我应该得到该部分的所有键,而且我确实这样做了:50% 的时间。

如果 ini 文件的第一行是 lpApplicationName,则缓冲区不返回任何内容。如果 lpApplicationName stats 在文件的第二行,它返回预期值。

起初我认为这是在声明中使用 W 版本和 Unicode 的问题,但更改这些似乎没有任何效果。

我错过了什么?

最佳答案

检查您打开的文件是否有 byte order mark (标记文本编码类型的几个字节)。

这些 Windows API 调用似乎无法理解字节顺序标记,并且导致它们错过了第一部分(因此,如果有空行,则一切正常)。

关于winapi - GetPrivateProfileString 奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124786/

相关文章:

c++ - 单独更改我的应用程序的字体平滑而不是全局 Windows 字体平滑设置

c++ - GetTextExtentPoint32 不考虑当前字体

c++ - C++ 库中的文件打开接口(interface)应该在 Windows 上使用 UTF-8 吗?

mysql - 加载数据到文件默认编码

php - header 显示为 UTF-8,但重音显示不正确 - 为什么? (php)

C++ concurrent_unordered_map C++11 Microsoft 使用 unsigned long 作为 key/HASH 函数

c++ - 相同的 C++ 代码有时有效,有时无效

android - 从 Android 上的 json 中的 http 响应获取希伯来语字符

go - 如何将两个字母的国家代码映射到表情符号?

python - 如何确定 Python 中 datetime.strftime(...) 的编码?