V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Feiox
V2EX  ›  问与答

C 语言对 Unicode 友好吗?

  •  
  •   Feiox · 2015-12-21 19:55:35 +08:00 · 2593 次点击
    这是一个创建于 3054 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近需要高性能处理一些文本数据,多语言(有些还是 GBK 编码。。。

    以前玩 C 的时候处理的不是二进制就是纯 ASCII ,所以不了解相关知识。
    我项问一下,使用 C 语言处理 Utf-8 字符编码方便吗?(原谅我是 C++ 一生黑 ~)

    # 另外,有没有用 Rust 对接 Python 的,会不会有些坑?(我只是好奇想尝试一下)

    10 条回复    2015-12-22 00:10:56 +08:00
    lianz
        1
    lianz  
       2015-12-21 20:06:07 +08:00
    在 C 的世界里只有 bytes 数组,什么 UTF8 、 GBK 编码都是上层建筑,自己处理或者用第三方库处理。
    huodon
        2
    huodon  
       2015-12-21 20:12:35 +08:00
    用 icu4c ?
    ffffwh
        3
    ffffwh  
       2015-12-21 20:22:47 +08:00 via Android
    utf-8 、 gbk 这种变长的 char s[]直接放,但有非 ascii 的话 s[i]可不是第 i 个字符,第 i 个字符恐怕只能一个个解析。
    utf-16 这种定长(似乎并不是,详不明)双字节的又是另一回事, wchar_t []或者 char []一次跳两个。
    xufang
        4
    xufang  
       2015-12-21 20:30:27 +08:00   ❤️ 1
    jhaohai
        5
    jhaohai  
       2015-12-21 20:51:46 +08:00
    c 只认识 ansi
    xufang
        6
    xufang  
       2015-12-21 20:53:43 +08:00   ❤️ 1
    诸位大发宏论的之前,请先看下我的 #4 的连接,无意冒犯诸位哦,谢谢。
    northisland
        7
    northisland  
       2015-12-21 21:06:42 +08:00
    c 语言确实很高性能,
    但也“烫烫烫烫烫”, 2333

    楼主找到什么好库记得分享一下~
    longaiwp
        8
    longaiwp  
       2015-12-21 23:30:23 +08:00
    @xufang 你这个也是人家帮你实现了一下而已。。。算不得上友好吧
    YuJianrong
        9
    YuJianrong  
       2015-12-21 23:35:01 +08:00
    @ffffwh utf-16 并不是定长的,和 utf-8 一样变长,所以也一样不能确切认为 s[i]就是地 i 个字符,所幸大部分使用的字符都在 BMP ( Basic Multilingual Plane ,基本多语言平面),这一区域的字符 utf-16 是两字节的。 BMP 之外主要是一些很不常用的汉字和其他语言以及表情符号等。

    @xufang 这个基本没用,也就是 unicode 文本能写进源代码和几个简单的 API 而已。

    直接说结论的话, C 语言处理 Utf-8 字符编码一点都不方便,不过其实如果你是需要高性能的话,也只有 C 语言这一个解决方案了吧,毕竟没有接近汇编的控制能力怎么写高性能的处理程序……
    xufang
        10
    xufang  
       2015-12-22 00:10:56 +08:00
    @YuJianrong 呵呵,我是针对一些对 C 语言有成见的观点才发这个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1964 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:22 · PVG 09:22 · LAX 18:22 · JFK 21:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.