C: Display special characters with printf()
我想知道如何使用printf()显示特殊字符。
我正在做一个从Text到Code128(条形码编码)的字符串转换程序。
对于这种类型的编码,我需要显示诸如?,?,è,ì之类的字符。
示例:
要转换的字符串:EPE196000100000002260500004N
预期结果:ìEPE?3\ *R 6\ R $èNZ?
printf结果键入:╠EPE?3\ *R 6\ R $?NZ╬
printf结果图像:[]
编辑:我只能在此程序中使用C,而根本没有C ++。 到目前为止,我发现的所有遮阳篷都使用C ++而不是C,所以我问如何用C ^^
-
只需打印它们。但是请注意,您的控制台或其他输出设备的编码以及代码页都会对其产生影响。如果需要特定的代码,最好使用十六进制代码。
-
好吧,尝试一下,很多;)
-
我从ascii-code.com上获取了Ascii / Hexa代码,并与printf("%c%c%c%c n", xCC, xC8, xCE, xC7)绑定在一起进行显示;结果:╠╚╬很漂亮,但我没想到...:/您对如何解决它有任何想法吗? ^^
-
使用C ++可能将输出Unicode复制到控制台
-
如何在C ++中打印Unicode字符?,使用printf打印UTF-8字符串-宽字节字符串与多字节字符串文字,如何在C / C ++中输出unicode字符以及一个刚问到的问题:是否可以在上使用EM DASH Linux和Windows? (C ++)
-
如果打印\xCC, \xC8, \xCE,\xC7并看到4个不同的字符,则表示您的控制台未采用UTF-8编码。可能您的控制台没有必需的字符(可以通过循环打印所有可打印字符32-255进行检查)。您可能会想到如何将字符转换为UTF-8,然后使用UTF-8控制台。
-
看起来您的控制台中需要代码 x8c,x8d asciiset.com
-
所有这些遮阳篷可以帮助您更好地理解问题,但不能解决,因为我不能在该程序中使用C ++ ...:/我只能使用C ^^我在询问之前进行了大量研究,仅找到了C ++遮阳篷,并且这是该程序的最后一步,如果没有正确的结果将非常烦人...
我找到了
1 2 3 4 5 6 7
| #include <locale.h>
int main ()
{
setlocale(LC_ALL ,"");
printf("%c%c%c%c
", '?', '?', ' è','ì');
} |
谢谢大家的遮阳篷,这对我有很大帮助!!! :)
-
请注意,此代码不是可移植的,因为这样的符号()可能以一个字节或几个Unicode字节的形式存储在您的源文件中。 这取决于您的文本编辑器。 如果文本编辑器为非Unicode,则这些符号的二进制代码取决于编辑器编码。
如果您的控制台使用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")。 可以在控制台属性中手动更改它,因为默认字体可能是"光栅字体"。
-
非常感谢!! 我将以这种方式进行调查:)
-
我试图这样做来更改控制台编码#include int main(){SetConsoleOutputCP(CP_UTF8); printf("%c%c%c%c n", u00CE,,,); 返回0; },但仍显示我不想看到的东西... ^^ img110.xooimage.com/views/a/e/9/capture1-4d0699b.png
-
@MarceauC现在,您可以更清楚地使用Windows控制台。 我用Windows示例更新了答案。