리마인더를 표시하는 프로그램을 작성했습니다. 일부 프로그램은 스페인어로되어 있으며 일부는 영어로 작성되었습니다. 영어는 문제없이 표시되지만 스페인어에서는 악센트가있는 문자가 이상한 기호로 표시됩니다. 이것은 Windows7이 글리프를 처리 할 수 없으므로 업그레이드가 필요하거나 ASCII 테이블이 잘못되었음을 의미합니까? 이 문제를 해결하려면 어떻게해야합니까? 당신이 UTF-8로 인코딩 된 텍스트를 표시하는 MessageBoxW를 요청할 때악센트가있는 스페인어 문자가 이상한 기호로 표시됩니다.
#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();
}
원본을 삭제 했으므로이 질문을 다시 열었습니다. 그러나 원본에 도움이되는 주석이 없어 졌으므로 원본을 실제로 편집해야합니다. 장래에 항상 원래 질문을 업데이트하고 중복 된 것을 게시하지 마십시오. 또한 사이트의 작동과 관련된 모든 문제는 귀하의 질문이 아닌 메타에 있습니다. –
MessageBoxEx를 MessageBoxW로 바꾸고 다시 시도하십시오. –
당신은'L '''문자열이있는'TEXT' 매크로를 사용하고 있습니다. 일치하지 않는 문자열이 있습니다. 와이드 캐릭터를 표준화하고'TCHAR' 매크로를 피하는 것이 좋습니다. – Dai