【问题标题】:How to convert a string or character to its unicode representation and back?如何将字符串或字符转换为其 unicode 表示形式并返回?
【发布时间】:2014-08-05 06:49:41
【问题描述】:

我正在学习更多关于 Unicode 的知识。有人可以演示如何将代码点值转换为字符串,反之亦然。

例如:如何将U+0037 转换为7 的字符或字符串表示形式。

还请说明如何为 ascii 执行此操作。例如:将  转换为它的字符或字符串表示形式,即空格。

【问题讨论】:

  • 解析字符串然后使用chr() 来获取字符很容易。这对于 BMP 中的代码点来说很好。 HTML 实体完全是另外一回事。
  • David 是像 s:=chr(' ') 还是 s:=chr('U+0037'); 一样简单?
  • 首先你必须阅读chr()的文档。然后从'U+0037' 中解析出代码点ordianl。和html实体完全不同。获取这些数据库。
  • 是的,我感觉我需要一些数据库,但我认为 delphi 会附带一个。好吧,我想我将不得不在网上搜索一个 Unicode 表并解析它。

标签: delphi unicode delphi-xe


【解决方案1】:

Delphi 字符串已经使用 Unicode (UTF16) 编码,因此无需将 delphi 字符串“转换”为 Unicode。下面是一个示例,如何将 nbsp (U+00A0) 和 '7' (U+0037') 的 Unicode 表示直接插入到 delphi 字符串中:

procedure TForm1.Button1Click(Sender: TObject);
const
  U_nbsp = $00A0;
  U_7 = $0037;

var
  S: string;

begin
  S:= 'abcd' + Char(U_nbsp) + Char(U_7);
  ShowMessage(S);
end;

【讨论】:

  • 先生,我看到了 const 的用法,但是如果您不知道要解码的项目怎么办?
  • @megatr0n 将const 替换为var?
  • @megatr0n 如果您有 U+0000 格式的 Unicode 跳转代码,您可以将其解析为十六进制数字,然后使用 StrToInt() 函数将其转换为整数。
  • @megatron 但是它并没有解决   相关的问题,因为它不是 Unicode 跳转码表示。
  • @DavidHeffernan:Chr ,实际上是一个演员表。它不会产生任何代码(除了通常的 Byte to Word 扩展,演员也会产生),AFAICT。
【解决方案2】:
procedure TFrm.FormCreate(Sender: TObject);
begin

  TabEmoj.Text:=#$1F604;
  KeyEmojisActivator.Text:=#$1F604;
  Attachbutton.Text:=#$1F4CE;
   VideoAudiobutton.Text:=#$1F3A5;  /// MIC = #$1F3A4;
   EnterButton.Text:=#$21A9;
end;  
// use this. Download example on u9.by

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多