c – 如何在visual studio中打开.cpp文件并使其正确显示带有西里
我正在尝试使用其他人的C代码打开源文件.在编写代码时,他使用了旧版本的visual studio,现在我就拥有了.
西里尔字母被扭曲了. 愚蠢地混淆它的一部分是编码问题.当我用任何程序打开.cpp文件时,可以读取除记事本之外的文本英文字符完全显示,但西里尔字母是扭曲的.记事本显示它以ANSI编码打开该文件.如果我将正确显示的文本从记事本复制到其他程序(视觉工作室,标准窗口记事本,浏览器中的谷歌翻译器,一些在线编码转换器),它会再次变形,就好像它是复制字节而不是字符一样(这个让我大吃一惊)所有). 以下是visual studio如何显示它: cout << "????? ????? ? ??????? 100-999"; cout << "n???????? 2 (??i? ????? ?? ? ?? ??????? ?????) = " << d; cout << "n???????? 3 (??i? ????? ?? ?? ?? ????????? ????) = " << f << "n"; 这是正确的代码: cout << "серед чисел в д?апазон? 100-999"; cout << "nзавдання 2 (ус?х чисел де ? дв? однаков? цифри) = " << d; cout << "nзавдання 3 (ус?х чисел де не ма? однакових цифр) = " << f << "n"; 附:我知道关于编码的问题已经被问了十亿次,但是我找不到合适的答案,所以如果以前得到答复,请不要打我.提前致谢. 解决方法
我可以为您的问题建议一个可行的解决方案,它在我的Visual Studio 2017和
ConEmu中使用UTF-8编码输出正常工作.
首先使用u8 literal strings,它给你UTF-8输出: #include <iostream> int main() { double d = 0.0; double f = 1.0; std::cout << u8"серед чисел в д?апазон? 100-999"; std::cout << u8"nзавдання 2 (ус?х чисел де ? дв? однаков? цифри) = " << d; std::cout << u8"nзавдання 3 (ус?х чисел де не ма? однакових цифр) = " << f << "n"; return 0; } 然后在ConEmu console emulator下编译并运行程序,该程序支持UTF-8输出.根据ConEmu Unicode support documentation,您需要使用命令chcp 65001切换到UTF-8: chcp 65001 test.exe 它给了我以下结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |