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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C:用printf()显示特殊字符相关的知识,希望对你有一定的参考价值。

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

例: 要转换的字符串:EPE196000100000002260500004N 预期结果:ÌEPEÇ3 *R 6 R $ÈNZÎ printf结果输入:╠EPEÇ3 *R 6 R $ÇNZ╬ printf结果图片:[]

编辑:我只能在这个程序中使用C而不是C ++。到目前为止我找到的所有芒果都是用C ++而不是C所以我问怎么用C ^^来做

答案

我找到了,

#include <locale.h>
int main()
{
setlocale(LC_ALL,"");
 printf("%c%c%c%c
", 'Î', 'Ç', ' È','Ì');
}

谢谢大家的帮助我帮助了我! :)

另一答案

如果您的控制台是UTF-8,则可以只为您的符号打印UTF-8十六进制表示。请参阅C ++ Special Characters on Console的类似答案

以下行打印心脏:

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控制台:

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”)。它可以在控制台属性中手动更改,因为默认字体可能是“光栅字体”。

以上是关于C:用printf()显示特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

为啥visual+studio+code里面用c语言写的printf输出中终端显示问号?

[linux][c/c++]代码片段01

C语言,为啥用 printf("%d",c*0.85)出来的结果不对?

c语言字符串数组怎么输入和输出呢

printf()函数输出啥类型的数据?

C - 使用特殊字符格式化字符串大小