C++ Windons外壳扩展的正确编码是什么;“属性描述模式”;文件
我有一个库包,用于创建Windows Shell扩展,特别是文件属性所需的代码。我需要我的项目支持Unicode文件和文本,因此我使用Unicode支持编译项目,但是当我使用regsvr32注册dll时,库包会自动生成.propdesc文件,但它似乎会将文件写入UTF-16。执行此操作时,属性似乎没有正确注册到索引器。但是,如果我将dll编译为多字节而不是Unicode,那么这个文件将以ASCII编码编写和注册,然后就可以工作了C++ Windons外壳扩展的正确编码是什么;“属性描述模式”;文件,c++,windows,encoding,shell-extensions,C++,Windows,Encoding,Shell Extensions,我有一个库包,用于创建Windows Shell扩展,特别是文件属性所需的代码。我需要我的项目支持Unicode文件和文本,因此我使用Unicode支持编译项目,但是当我使用regsvr32注册dll时,库包会自动生成.propdesc文件,但它似乎会将文件写入UTF-16。执行此操作时,属性似乎没有正确注册到索引器。但是,如果我将dll编译为多字节而不是Unicode,那么这个文件将以ASCII编码编写和注册,然后就可以工作了 由于.propdesc文件是一个XML文档,其标题声明为“UTF-
由于.propdesc文件是一个XML文档,其标题声明为“UTF-8”,我认为编码必须是UTF-8,但我知道Windows并不总是遵循这种想法。那么,有人知道索引器是接受UTF-16格式的属性描述方案文件,还是只接受UTF-8/ASCII编码的文件吗?等等。.propdesc文件包含UTF-16,但其标头声明为UTF-8?这不是问题的全部吗?有人会这么认为,但我见过其他Windows API以两种编码方式处理文件,不管XML怎么说,因为Windows并不总是遵循标准。:)另外,问题是整个文件(包括XML头)已在UTF-16编码。那么,标题到底有什么好处呢?听起来像是又一个新老东西的条目。事实上,某些Windows组件意外地理解了损坏的XML并不意味着所有Windows组件都会解析所有损坏的XML。我已经向制作库包的公司报告了这个问题,所以我想我只能等待他们的回复。只需创建一个构建后步骤来剥离