【问题标题】:How can I encode string to UTF8 WideString on Delphi XE5? [duplicate]如何在 Delphi XE5 上将字符串编码为 UTF8 WideString? [复制]
【发布时间】:2014-07-13 07:51:21
【问题描述】:

如何在 Delphi XE5 上将 string 编码为 UTF8 string?当我尝试将 UTF8 编码字符串转换为 string 类型时,我会丢失 UTF8 编码:

Result := string(Utf8Encode(ASource));

【问题讨论】:

  • Result 的类型是什么?那是string 并且您使用的是Unicode Delphi 吗?如果是这样,那么它可能与this question 重复。 [我有一个关闭的投票锤,并希望保持这个 Q 开放,因为它不完整......]
  • @TLama:挥动锤子(或者我会)。确实是重复的。
  • @Ken,这个问题是WideStringUnicodeString 的类似组合,但是是的,it's a duplicate
  • 我无法理解这个问题。我在这里根本看不到任何 WideString。

标签: string delphi unicode encoding utf-8


【解决方案1】:

来自重复的问题:

      aUTF8Str := UTF8Encode(aClientDataSet.Fields[i].DisplayLabel);
      SetCodePage(aUTF8Str, 0, False);
      aUnicodeStr := UnicodeString(aUTF8Str);
      Result := aUnicodeStr;

【讨论】:

  • 强制RawByteString 的代码页0 后将RawByteString 转换为UnicodeString 要求数据丢失。 CodePage 0 映射到用户的默认操作系统代码页,它可以是任何东西。如果您真的想将 UTF-8 八位字节原样复制到 UnicodeString 字符中,最好手动循环遍历 RawByteString
  • 这里没有 WideString 实例。
猜你喜欢
  • 1970-01-01
  • 2011-10-13
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2010-11-04
  • 2012-01-19
相关资源
最近更新 更多