C - 在linux终端中打印希腊字母

时间:2017-05-03 07:27:21

标签: c linux terminal

我有这篇关于C语言的论文,它需要在终端上打印一些希腊句子。 在给我们的代码模板中有这行代码:

�������� ����� �� ����� ����� ��� �������� ���� ������

这应该打印希腊字符。 在我的Ubuntu终端中,我看到:

{{1}}

那么,如何在终端中打印希腊字符?

2 个答案:

答案 0 :(得分:2)

在大多数Linux中,这都是开箱即用的。唯一必须做的就是使用

 setlocale(LC_ALL, "");

在程序的开头。这依赖于以下事实:UTF-8是用户的默认编码选择'语言环境。该标准表示此呼叫切换到用户的当前区域设置。默认是使用" C"可能支持或不支持国家字符的语言环境。

默认情况下,gcc将源代码解释为以UTF-8编码。编译时选项可以改变它,但建议在Linux上保留UTF-8中的所有内容。来自Windows的源可能不是用UTF-8编码的,需要重新编码。使用iconv实用程序; l。如果源与特定的遗留代码页相关联,请尝试将该代码页名称作为源编码。

答案 1 :(得分:1)

输入或输出非ASCII文本的C程序(符合ISO C99或更高版本,或POSIX.1或更高版本)应使用宽字符串,宽I / O和本地化。

例如:

L"..."

请注意,使用"..."编写宽字符串文字,而使用wint_t编写普通(ASCII或窄)字符串文字。类似地,宽字符常量(类型L)用L'€'前缀写入;例如,-finput-charset=windows-1252

编译时,您需要告诉编译器源代码使用的字符集。在Linux中,GCC使用区域设置,但也提供了一个选项to-utf8,例如将其更改为Windows Western European。

我建议你写一个Bash助手脚本,而不是摆弄旗帜,比如#!/bin/bash if [ $# -lt 2 ] || [ ":$1" = ":-h" ] || [ ":$1" = ":--help" ]; then printf '\n' printf 'Usage: %s [ -h | --help ]\n' "$0" printf ' %s windows-1252 file.c [ ... ]\n' "$0" printf '\n' exit 0 fi charset="$1" shift 1 Work=$(mktemp) || exit 1 trap "rm -f '$Work'" EXIT for src in "$@" ; do iconv -f "$charset//TRANSLIT" -t UTF-8 "$src" > "$Work" || exit $? sed -e 's|\r$||' "$Work" > "$src" || exit $? printf '%s: Converted successfully.\n' "$src" done exit 0

sudo install -o 0 -g 0 -m 0755 to-utf8 /usr/bin/

如果需要,可以使用

在系统范围内安装
iconv --list

第一个命令行参数是源字符集(使用iconv查看全部),然后是要修复的文件列表。

该脚本会创建一个自动删除的临时文件。 sed行将每个文件的字符集转换为UTF-8,将结果保存到临时文件中。 \r\n文件将任何CRLF(\n)换行符更改为LF(sed),覆盖文件内容。

(而不是使用第二个临时文件来保存内容,让<%= image_tag image_article.picture.url, class: 'img-fluid' if image_article.picture? %> 将其输出定向到原始文件,意味着原始文件保持其所有者和组完整。)