C:使用printf()显示特殊字符

C: Display special characters with printf()

我想知道如何使用printf()显示特殊字符。
我正在做一个从Text到Code128(条形码编码)的字符串转换程序。
对于这种类型的编码,我需要显示诸如?,?,è,ì之类的字符。

示例:
要转换的字符串:EPE196000100000002260500004N
预期结果:ìEPE?3\ *R 6\ R $èNZ?
printf结果键入:╠EPE?3\ *R 6\ R $?NZ╬
printf结果图像:[enter image description here]

编辑:我只能在此程序中使用C,而根本没有C ++。 到目前为止,我发现的所有遮阳篷都使用C ++而不是C,所以我问如何用C ^^


我找到了

1
2
3
4
5
6
7
#include <locale.h>
int main()
{
setlocale(LC_ALL,"");
 printf("%c%c%c%c
"
, '?', '?', ' è','ì');
}

谢谢大家的遮阳篷,这对我有很大帮助!!! :)


如果您的控制台使用UTF-8,则仅可以为您的符号打印UTF-8十六进制表示形式。 在控制台上查看C ++特殊字符的类似答案

以下行显示了heart:

1
2
printf("%c%c%c
"
, '\xE2', '\x99', '\xA5');

但是,由于打印'\xCC', '\xC8', '\xCE','\xC7'并且有4个不同的符号,这意味着控制台编码是某种ASCII扩展名。 可能您有这样的编码http://asciiset.com/。 在这种情况下,您需要字符' x8c','x8d'。 不幸的是,在该编码中没有这些符号的大写形式。 因此,您的控制台需要一些其他编码,例如Latin-1,ISO / IEC 8859-1。

对于Windows控制台:

1
2
3
4
5
6
7
8
9
10
11
12
13
UINT oldcp = GetConsoleOutputCP(); // save current console encoding

SetConsoleOutputCP(1252);
// print in cp1252 (Latin 1) encoding: each byte => one symbol
printf("%c%c%c%c
"
, '\xCC', '\xC8', '\xCE','\xC7');

SetConsoleOutputCP(CP_UTF8);
// 3 hex bytes in UTF-8 => one 'heart' symbol
printf("%c%c%c
"
, '\xE2', '\x99', '\xA5');

SetConsoleOutputCP(oldcp);

控制台字体应支持Unicode(例如" Lucida Console")。 可以在控制台属性中手动更改它,因为默认字体可能是"光栅字体"。