c++之cout、wcout、printf、wprintf不显示汉字或许遇到汉字即中断显示的原因

c++之cout、wcout、printf、wprintf不显示汉字或者遇到汉字即中断显示的原因

原因:机器本地性引起,cout输出的时候,其并不知道你输出的字符编码是代表的什么语言,所以会根据你计算机的区域设置而确定,但我的计算机设置的是英文的,所以将字符编码按照英文进行处理,很明显也就很快显示不出来了,因为cout发现这根本不是英文,不知道是什么玩意。

如果你的计算机本来就设置的中文区域,就不会出现这样的问题。

关键是wcout为何也不能输出中文呢,其处理的不是utf-16吗?这难道还要分计算机区域设置,不是全球化编码吗?原因很简单,utf-16有代理页一说,还是和你计算机相关


wcout输出时显示不了中文,加上下面这句就行了。

std::wcout.imbue(std::locale("chs"));


Primary language

Sublanguage

Language string

Chinese

Chinese

"chinese"

Chinese

Chinese (simplified)

"chinese-simplified" or "chs"

Chinese

Chinese (traditional)

"chinese-traditional" or "cht"

Czech

Czech

"csy" or "czech"

Danish

Danish

"dan" or "danish"

Dutch

Dutch (default)

"dutch" or "nld"

Dutch

Dutch (Belgium)

"belgian", "dutch-belgian", or "nlb"

English

English (default)

"english"

English

English (Australia)

"australian", "ena", or "english-aus"

English

English (Canada)

"canadian", "enc", or "english-can"

English

English (New Zealand)

"english-nz" or "enz"

English

English (United Kingdom)

"eng", "english-uk", or "uk"

English

English (United States)

"american", "american english", "american-english", "english-american", "english-us", "english-usa", "enu", "us", or "usa"

Finnish

Finnish

"fin" or "finnish"

French

French (default)

"fra" or "french"

French

French (Belgium)

"frb" or "french-belgian"

French

French (Canada)

"frc" or "french-canadian"

French

French (Switzerland)

"french-swiss" or "frs"

German

German (default)

"deu" or "german"

German

German (Austria)

"dea" or "german-austrian"

German

German (Switzerland)

"des", "german-swiss", or "swiss"

Greek

Greek

"ell" or "greek"

Hungarian

Hungarian

"hun" or "hungarian"

Icelandic

Icelandic

"icelandic" or "isl"

Italian

Italian (default)

"ita" or "italian"

Italian

Italian (Switzerland)

"italian-swiss" or "its"

Japanese

Japanese

"japanese" or "jpn"

Korean

Korean

"kor" or "korean"

Norwegian

Norwegian (default)

"norwegian"

Norwegian

Norwegian (Bokmal)

"nor" or "norwegian-bokmal"

Norwegian

Norwegian (Nynorsk)

"non" or "norwegian-nynorsk"

Polish

Polish

"plk" or "polish"

Portuguese

Portuguese (default)

"portuguese" or "ptg"

Portuguese

Portuguese (Brazil)

"portuguese-brazilian" or "ptb"

Russian

Russian (default)

"rus" or "russian"

Slovak

Slovak

"sky" or "slovak"

Spanish

Spanish (default)

"esp" or "spanish"

Spanish

Spanish (Mexico)

"esm" or "spanish-mexican"

Spanish

Spanish (Modern)

"esn" or "spanish-modern"

Swedish

Swedish

"sve" or "swedish"

Turkish

Turkish

"trk" or "turkish"