【问题标题】:Emoji cStringUsingEncoding with NSASCIIStringEncoding not working带有 NSASCIIStringEncoding 的表情符号 cStringUsingEncoding 不起作用
【发布时间】:2018-04-20 20:05:45
【问题描述】:

我有一个数据数组:

MY_ARRAY: (
  "email="My_Email_ID"",
  "message=\Ud83d\Ude0a",
  "key="MY_KEY"
  "id="MY_ID""
)

在消息字段中,我添加了表情符号,它显示的是十六进制值。

但是当我尝试将其转换为字符串时:

string = [MY_ARRAY componentsJoinedByString: @"&"];

终端输出显示:

email="My_Email_ID"&message=????&key="MY_KEY"&id="MY_ID"

为什么要转换回表情符号?

我面临的问题是在这一行:

const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];

因为我在这里得到空值。

【问题讨论】:

    标签: ios objective-c xcode emoji


    【解决方案1】:

    更改以下行:

    const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];
    

    const char *charData = [string cStringUsingEncoding:NSUTF8StringEncoding];
    

    解决了我的问题。

    感谢forum

    如果可能,请远离 UTF8 以外的任何内容。 只要字符串中有非 ASCII 字符,NSASCIIStringEncoding 就会中断(返回 NULL)。没有理由冒险。仅使用 cStringUsingEncoding: 如果您实际上出于某种奇怪的原因需要该特定编码的字符串。由于 NSLog 需要 UTF8 字符串,任何不是 UTF8 子集的编码都会产生奇怪的结果。

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 2021-10-11
      • 2019-06-02
      • 2023-03-04
      • 2012-12-09
      • 2017-03-24
      • 1970-01-01
      • 2018-10-28
      • 2013-10-24
      相关资源
      最近更新 更多