gpt4 book ai didi

c++ - 带有重音符号 [í é] 的西类牙字母显示为奇怪的符号

转载 作者:行者123 更新时间:2023-11-28 06:41:02 24 4
gpt4 key购买 nike

我写了一个显示提醒的程序,其中一些是西类牙语,一些是英语。英文显示没有任何问题,但在西类牙文中,带有重音符号 [í é] 的字母显示为奇怪的符号。这是否意味着 Windows7 无法处理此字形,因此需要升级,或者 ASCII 表有误?我该怎么做才能解决这个问题?

#include <windows.h>
#include <string>

using STR_VECTOR = std::vector<std::wstring>;
...
class MyClass{
...
private: std::shared_ptr<STR_VECTOR> quote;
private: std::wstring wstr;
..
public: MyClass();
};
CPP file
~~~~~~
MyClass::MyClass(){
quote.reset(new VECTORSTR);
//... bla bla bla
quote->push_back(L"Yes, Thus is the wolf");
quote->push_back(L"Sí, así es el lobo");
//... bla bla bla
uint64_t vec_size = quote->size();
std::srand ((uint64_t)std::time(0));
quote_num = rand( ) % ( vec_size );
wstr = quote->at( quote_num );
MessageBoxEX( NULL, wstr.c_str( ), TEXT("SomeText"), MB_OK | MB_ICONINFORMATION,0 );
app.Write( );
}

最佳答案

The letter í is displayed as à in the text area of the MessageBoxW

当您要求 MessageBoxW 显示 utf-8 编码的文本时,该字母会出现。问题出在您的源代码文件上。它以 utf-8 编码保存,但编译器不知道。它假定您使用机器的默认代码页保存了它。当您说西类牙语时通常为 1252。

再次打开文件,进行任意更改,然后单击"file"+“另存为”。单击“保存”按钮上的箭头并选择“使用编码保存”。选择“Unicode(带签名的 UTF8)- 代码页 65001”。该文件现在将具有 BOM,因此编译器确实知道它包含 utf-8 编码的文本。

这是默认设置,不清楚这个文件是如何在没有 BOM 的情况下结束的。如果您使用其他文本编辑器,请当心,您将需要重新配置或停用它。

关于c++ - 带有重音符号 [í é] 的西类牙字母显示为奇怪的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25948809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com