首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在visual studio中打开.cpp文件并使其正确显示带有西里尔字符的字符串文字?

如何在visual studio中打开.cpp文件并使其正确显示带有西里尔字符的字符串文字?
EN

Stack Overflow用户
提问于 2019-01-12 02:28:09
回答 2查看 386关注 0票数 4

我正在试着用另一个人的C++代码打开源文件。在编写代码时,他使用的是比我现在使用的更老版本的visual studio。西里尔字母是扭曲的。

令人困惑的部分是编码问题。当我用任何程序打开.cpp文件时,除了notepad++英文字符外,可以阅读的文本都显示得很好,但西里尔字母是扭曲的。Notepad++显示它以ANSI编码打开该文件。如果我将正确显示文本从notepad++复制到其他程序(visual studio、标准windows记事本、浏览器中的google translator、一些在线编码转换器),它就会再次失真,就好像它复制的是字节而不是字符一样(这让我印象最深)。因为.cpp文件基本上只是一个文本文件,我不明白为什么我不能读它。如果它是损坏的文件- notepad++不会读取它。或者至少它会显示一些错误消息,不是吗?

下面是visual studio显示它的方式:

代码语言:javascript
运行
复制
cout << "����� ����� � ������� 100-999";
cout << "\n�������� 2 (��i� ����� �� � �� ������� �����) = " << d;
cout << "\n�������� 3 (��i� ����� �� �� �� ��������� ����) = " << f << "\n";

下面是正确的代码:

代码语言:javascript
运行
复制
cout << "серед чисел в діапазоні 100-999";
cout << "\nзавдання 2 (усіх чисел де є дві однакові цифри) = " << d;
cout << "\nзавдання 3 (усіх чисел де не має однакових цифр) = " << f << "\n";

附注:我知道关于编码的问题已经被问了几十亿次,但我没有找到合适的答案,所以如果之前有人回答了,请不要给我太大的打击。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-01-12 22:07:23

我可以为你的问题建议一个可行的解决方案,它在我的Visual Studio2017和ConEmu中工作得很好,支持UTF-8编码输出。

首先,使用u8 literal strings,它会给出UTF-8输出:

代码语言:javascript
运行
复制
#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;
}

然后在支持UTF8输出的ConEmu console emulator下编译和运行您的程序。根据ConEmu Unicode support documentation,您需要使用命令chcp 65001切换到UTF-8

代码语言:javascript
运行
复制
chcp 65001
test.exe

它给出了以下结果:

票数 1
EN

Stack Overflow用户

发布于 2019-01-18 04:36:46

将文件保存为Unicode编码,最好是UTF8。转到文件菜单,然后单击另存为

当你点击“用编码保存...”时,Visual Studio应该至少给出两个UTF8选项:

“带签名的UTF8”

“不带签名的UTF8”

微软产品更喜欢带签名的UTF8,而Notepad++更喜欢不带签名的UTF8。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54152110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档