c - TCP 接收扩展的 ASCII 或 utf-8 字符

标签 c tcp winsock

对于倒问号 ¿ 我收到两个字节 [-62][-65] 但我如何获得可读的 utf-8 或 ASCII 字符编码?

最佳答案

那个字符的 UTF8 代码。 inverted question mark是 Unicode 代码点 191在 UTF8 中,它是 0xc2:0xbf .

您将它们视为带符号的字节。例如-62签名是256-62194无符号 - 这是十六进制 0xc2 .

同样,-65签名是256-65191无符号 - 这是十六进制 0xbf .

如果您想将您的 UTF8 序列转换为代码点,您可以使用下表。

    Range              Encoding  Binary value
    -----------------  --------  --------------------------
    U+000000-U+00007f  0xxxxxxx  0xxxxxxx

    U+000080-U+0007ff  110yyyxx  00000yyy xxxxxxxx
                       10xxxxxx

    U+000800-U+00ffff  1110yyyy  yyyyyyyy xxxxxxxx
                       10yyyyxx
                       10xxxxxx

    U+010000-U+10ffff  11110zzz  000zzzzz yyyyyyyy xxxxxxxx
                       10zzyyyy
                       10yyyyxx
                       10xxxxxx

例如,您的 0xc2:0xbf是二进制 11000010 10111111与第二种情况相匹配:

      11000010 10111111
         |||||   ||||||
         |||\\  //////
         ||| ||||||||
    00000000 10111111  ->  0x00bf  ->  191

关于c - TCP 接收扩展的 ASCII 或 utf-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4932785/

相关文章:

c - 冒泡排序打印垃圾值

C Scanf 循环

c - 宏中的 __VA_ARGS__ 是什么意思?

docker - 将 docker 镜像推送到使用 microk8s 插件安装的注册表

c++ - 错误 C2664 : 'errno_t strcpy_s(char *,rsize_t,const char *)' : cannot convert parameter 2 from 'char [512]' to 'rsize_t'

c - 为什么指向 int 的指针的值不能是指向 const int 的指针的值?

用于工作站客户端的 c# 热图像服务器流

python - 是否有任何 python 库可以抽象基于 IP 的传输——TCP、UDP、SCTP、TLS 等?

.net - 如何在没有管理员权限的情况下初始化Windows套接字库

delphi - Delphi中获取本地IP地址