c语言+readline作用,为什么来自readline库的readline()不接受UNICODE? ANSI C语言

#include

#include

#include

#include

int main()

{

char *user_input;

while(user_input = readline("> ")) {

printf("%s\n", user_input);

free(user_input);

}

return 0;

}

,当应用程序启动时,应该采取用户输入和换行符(回车键)应打印什么,我写了之后。

它适用于'a','b'等字符,但不适用于波兰语'ł'。该char被编码并以unicode形式发送。告诉我为什么?我能做些什么来告诉readline使用UNICODE并正确显示多字节字符?

我的readline版本是6.3

我补充一点,我的区域设置:

# locale

LANG=

LC_CTYPE="POSIX"

LC_NUMERIC="POSIX"

LC_TIME="POSIX"

LC_COLLATE="POSIX"

LC_MONETARY="POSIX"

LC_MESSAGES="POSIX"

LC_PAPER="POSIX"

LC_NAME="POSIX"

LC_ADDRESS="POSIX"

LC_TELEPHONE="POSIX"

LC_MEASUREMENT="POSIX"

LC_IDENTIFICATION="POSIX"

LC_ALL=

更改地区,以波兰和仍然没有工作:

# locale

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_ALL to default locale: No such file or directory

LANG=pl_PL.utf8

LC_CTYPE="pl_PL.utf8"

LC_NUMERIC="pl_PL.utf8"

LC_TIME="pl_PL.utf8"

LC_COLLATE="pl_PL.utf8"

LC_MONETARY="pl_PL.utf8"

LC_MESSAGES="pl_PL.utf8"

LC_PAPER="pl_PL.utf8"

LC_NAME="pl_PL.utf8"

LC_ADDRESS="pl_PL.utf8"

LC_TELEPHONE="pl_PL.utf8"

LC_MEASUREMENT="pl_PL.utf8"

LC_IDENTIFICATION="pl_PL.utf8"

LC_ALL=

还没下面的conf工作:

# export LANG="en_us.utf-8"

# bash

# locale

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_ALL to default locale: No such file or directory

LANG=en_us.utf-8

LC_CTYPE="en_us.utf-8"

LC_NUMERIC="en_us.utf-8"

LC_TIME="en_us.utf-8"

LC_COLLATE="en_us.utf-8"

LC_MONETARY="en_us.utf-8"

LC_MESSAGES="en_us.utf-8"

LC_PAPER="en_us.utf-8"

LC_NAME="en_us.utf-8"

LC_ADDRESS="en_us.utf-8"

LC_TELEPHONE="en_us.utf-8"

LC_MEASUREMENT="en_us.utf-8"

LC_IDENTIFICATION="en_us.utf-8"

LC_ALL=

#

2017-07-03

sibislaw

+1

你试过['setlocale(LC_ALL,“”);'](https://linux.die.net/man/3/setlocale)吗? –

+0

@Felix Palmen是的,我试过没有积极的结果。 –

+0

它对我有用(第一次调用readline()之前的setlocale),'readline()'使用语言环境。也许您的语言环境在系统上配置不正确? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值