C 语言怎么输出 Unicode 对应的汉字? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lonisletend
V2EX    C

C 语言怎么输出 Unicode 对应的汉字?

  •  
  •   lonisletend 2018-08-31 09:00:32 +08:00 5389 次点击
    这是一个创建于 2598 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说我得到一个类似“\u6d4b\u8bd5 ”的字符串,怎么让它在屏幕上以汉字形式输出,查到的都是 Windows 平台的处理方法,有没有通用的库或者方法?

    7 条回复    2018-09-16 07:01:36 +08:00
    shilyx
        1
    shilyx  
       2018-08-31 09:21:29 +08:00   3
    这个问题不是 C 语言处理的范畴。

    类似的问题还有“如何弹出一个消息提示?”

    C 语言中没有这些标准库,C++也没有,这些都是运行 C 语言编写程序的操作系统提供的接口,API
    CEBBCAT
        2
    CEBBCAT  
       2018-08-31 09:23:20 +08:00 via Android
    putchar,每次推一个字节,推俩字节就好了

    \u6d4b:putchar(0x6d) putchar(0x4b)
    chingyat
        3
    chingyat  
       2018-08-31 09:42:03 +08:00
    ```
    int main() {
    printf("\u6d4b\u8bd5");
    }
    ```

    直接输出就可以啊
    yksoft1
        4
    yksoft1  
       2018-08-31 10:11:25 +08:00   3
    Windows 下原生 Unicode 是 UCS-2,Linux 下原生 Unicode 是 UTF-8。
    sprintf 等不带前缀的 stdio 函数,Windows 下是 ANSI 内码,Linux 下默认是 UTF-8。
    因此通用的方法并不存在。
    iwtbauh
        5
    iwtbauh  
       2018-08-31 10:14:04 +08:00 via Android   3
    终端可能只能显示某种字符编码的 Unicode 字符

    一般得,shell 通过 LC_MESSAGES LANG 等环境变量告知应用程序终端使用什么编码,在大多数中文环境下( GNU/Linux,OS X,FreeBSD...)环境变量值为 zh_CN.UTF-8,意思是中文,终端使用 UTF-8 编码,因此你必须输出 UTF-8 编码才可以被人类识别。因此你需要读取环境变量,发现编码然后进行字符串转码,更好的方法是默认使用 UTF-8,这样就不用转码了(但是出去这个环境就用不了了)。

    另外,通过 gettext 等库实现将字符串剥离到数据文件,由翻译者提供各种编码的本地化文件才是主流做法,开发者不应该在代码逻辑里操心这些细枝末节的东西。
    purgle
        6
    purgle  
       2018-08-31 11:50:10 +08:00 via Android
    Windows 下中文的编码 C/C++方式是 ,查查 unicode 转 的方法
    FrankHB
        7
    FrankHB  
       2018-09-16 07:01:36 +08:00
    @yksoft1 Win2k 以后 NT 原生支持就基本上从 UCS-2LE 改成 UTF-16LE 了。Win32 倒是有 WM_UNICHAR 之类的坑货在之后才完善支持。

    @purgle CP936 明显不是 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6085 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 03:18 PVG 11:18 LAX 20:18 JFK 23:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86