如果是用VS,一种很大的可能是VS没有正确识别源代码编码格式,比如是UTF-8格式,no BOM. VS没有发现UTF-8或UTF-16的BOM头,会默认按ANSI编码(中文操作系统默认是GB2312)解析源代码,包括源代码中的字符串,即将UTF-8格式的字符串字节用GB2312来解析,自然可能会产生问题。
即使在VS的设置中增加额外选项"/utf-8"依然不能编译通过(VS2022 17.0.4, 这与微软官方文档的说法不一致),不过可以在命令行中加/utf-8消除问题,例如cl /utf-8 demo.c, 怀疑这是VS的一个bug.