我想知道如何使用printf()
显示特殊字符
我正在进行从Text到Code128(条形码编码)的字符串转换程序
对于这种类型的编码,我需要显示字符,如Î,Ç,È,Ì。
例:
要转换的字符串:EPE196000100000002260500004N
预期结果:ÌEPEÇ3\ *R 6\ R $ÈNZÎ
printf结果输入:╠EPEÇ3\ *R 6\ R $ÇNZ╬
printf结果图片:[]
编辑:我只能在这个程序中使用C而不是C ++。到目前为止我找到的所有芒果都是用C ++而不是C所以我在问这个怎么用C ^^
答案 0 :(得分:1)
如果您的控制台是UTF-8,则可以为您的符号打印UTF-8十六进制表示。请参阅C ++ Special Characters on Console
的类似答案以下行打印心脏:
printf("%c%c%c\n", '\xE2', '\x99', '\xA5');
但是,由于您打印'\xCC', '\xC8', '\xCE','\xC7'
并且您有4个不同的符号,这意味着控制台编码是某种ASCII扩展。可能你有这样的编码http://asciiset.com/。在这种情况下,您需要字符' \ x8c',' x8d'。遗憾的是,该编码中没有这些符号的资本版本。因此,您需要为控制台设置一些其他编码,例如Latin-1, ISO/IEC 8859-1。
对于Windows控制台:
UINT oldcp = GetConsoleOutputCP(); // save current console encoding
SetConsoleOutputCP(1252);
// print in cp1252 (Latin 1) encoding: each byte => one symbol
printf("%c%c%c%c\n", '\xCC', '\xC8', '\xCE','\xC7');
SetConsoleOutputCP(CP_UTF8);
// 3 hex bytes in UTF-8 => one 'heart' symbol
printf("%c%c%c\n", '\xE2', '\x99', '\xA5');
SetConsoleOutputCP(oldcp);
控制台字体应支持Unicode(例如' Lucida Console')。它可以在控制台属性中手动更改,因为默认字体可能是'光栅字体'。
答案 1 :(得分:1)
我已经找到了,
#include <locale.h>
int main()
{
setlocale(LC_ALL,"");
printf("%c%c%c%c\n", 'Î', 'Ç', ' È','Ì');
}
谢谢大家的帮助我帮助了很多!!! :)