加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在visual studio中打开.cpp文件并使其正确显示带有西里

发布时间:2020-12-16 07:24:20 所属栏目:百科 来源:网络整理
导读:我正在尝试使用其他人的C代码打开源文件.在编写代码时,他使用了旧版本的visual studio,现在我就拥有了. 西里尔字母被扭曲了. 愚蠢地混淆它的一部分是编码问题.当我用任何程序打开.cpp文件时,可以读取除记事本之外的文本英文字符完全显示,但西里尔字母是扭曲
我正在尝试使用其他人的C代码打开源文件.在编写代码时,他使用了旧版本的visual studio,现在我就拥有了.
西里尔字母被扭曲了.

愚蠢地混淆它的一部分是编码问题.当我用任何程序打开.cpp文件时,可以读取除记事本之外的文本英文字符完全显示,但西里尔字母是扭曲的.记事本显示它以ANSI编码打开该文件.如果我将正确显示的文本从记事本复制到其他程序(视觉工作室,标准窗口记事本,浏览器中的谷歌翻译器,一些在线编码转换器),它会再次变形,就好像它是复制字节而不是字符一样(这个让我大吃一惊)所有).
由于.cpp文件基本上只是文本文件,我不明白为什么我不能读它.如果它是损坏的文件 – 记事本不会读它.或者至少它会显示一些错误信息,不是吗?

以下是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

它给了我以下结果:

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读