使用xsd.exe将XSD转换为C#类时遇扩展ASCII字符报错
解决xsd.exe转换含扩展ASCII字符XSD文件报错的问题
这个问题我之前帮人排查过,xsd.exe对非ASCII字符的支持确实有点挑编码,给你几个实用的解决办法,不用逐个修改字符:
指定输入文件编码
xsd.exe其实自带了/encoding参数,可以直接指定XSD文件的编码类型。比如你的文件用的是包含扩展ASCII的Windows-1252编码,命令就写成:xsd.exe your_schema.xsd /c /encoding:Windows-1252如果你的文件是UTF-8编码(注意带BOM的格式xsd.exe识别更稳定),就把编码改成UTF-8:
xsd.exe your_schema.xsd /c /encoding:UTF-8转换XSD文件编码为UTF-8带BOM
如果指定编码参数还是不行,试试手动转换文件编码:- 用记事本打开你的XSD文件
- 点击「文件」→「另存为」
- 在「编码」下拉菜单里选择「UTF-8」(不是UTF-8无BOM),保存覆盖原文件
- 再用默认的xsd.exe命令转换,这时候它应该能正确识别
ô这类扩展字符了
Visual Studio内的处理技巧
如果是在Visual Studio里使用xsd工具:- 右键XSD文件→「属性」
- 点击「高级保存选项」(如果找不到,先在「工具」→「选项」→「文本编辑器」→「所有语言」里勾选「显示高级保存选项」)
- 设置编码为「Unicode (UTF-8 带签名) - Codepage 65001」
- 右键XSD文件→「运行自定义工具」,生成的C#类就不会有编码相关的报错了
内容的提问来源于stack exchange,提问作者ashlar64
相关产品推荐
相关产品推荐

