无法使用Unicode特殊字符设置窗口文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Unicode特殊字符设置窗口文本相关的知识,希望对你有一定的参考价值。
我正在尝试使用下面指定的unicode特殊字符按代码设置对话框项目文本:
https://www.fileformat.info/info/unicode/char/1f310/index.htm
我一直在尝试调用SetWindowTextW函数传递UTF-16(十六进制)值作为参数而没有成功:
GetDlgItem(IDSETTINGS)->SetWindowTextW(_T("uD83CuDF10"));
当我构建我的解决方案时,我遇到两个错误:
错误C3850:' uD83C'amon -character-.name指定无效字符
错误C3850:' uDF10'是universal-character-.name指定无效字符
我会感激任何帮助。
答案
在这种情况下,编译器错误C3850的原因可以在reference(强调我的)中找到:
表示为通用字符名称的字符必须表示0-10FFFF范围内的有效Unicode代码点。通用字符名称不能包含Unicode代理项范围,D800-DFFF或编码代理项对中的值。编译器自动从有效代码点生成代理项对。
使用UTF-32代码点对我有用:
GetDlgItem( IDSETTINGS )->SetWindowTextW( L"U0001F310" );
如果确保源文件以Unicode编码存储,您还可以将字符存储在源文件中,我建议使用带有BOM的UTF-8。
GetDlgItem( IDSETTINGS )->SetWindowTextW( L"以上是关于无法使用Unicode特殊字符设置窗口文本的主要内容,如果未能解决你的问题,请参考以下文章
PyYaml - 使用特殊字符(即重音符号)转储 unicode
使用 std::wifstream 读取带有特殊字符的 unicode 文件