如何将3字节的unicode字符写为字符串文字

时间:2015-06-15 19:09:07

标签: dart

these emoticons

的代码为例

对于像Dingbats(2702 - 27B0)这样的双字节代码

'abcd\u2702efg'

效果很好但是对于像\u1F601这样的较长代码,这不起作用。

String.fromCharCode(0x1f601)

虽然有效。

main() {
  print('abcd\u2702efg');
  print('abcd\u1F601efg');
  print(new String.fromCharCode(0x1f601));
}

尝试DartPad

有没有办法在Dart中将U+1F601写成字符串文字?

1 个答案:

答案 0 :(得分:12)

将字符代码括在花括号中:

print('abcd\u{1F601}efg');

来自Dart Programming Language Specification, Second Edition的§16.5,“字符串”:

  

字符串支持特殊字符的转义序列。逃脱是:

     
      
  • ...
  •   
  • \ x HEX DIGIT 1 HEX DIGIT 2 ,相当于   \ u { HEX DIGIT 1 HEX DIGIT 2 }。
  •   
  • \ u HEX DIGIT 1 HEX DIGIT 2 HEX DIGIT 3 HEX DIGIT 4 ,等效   到\ u { HEX DIGIT 1 HEX DIGIT 2 HEX DIGIT 3 HEX DIGIT 4 }。
  •   
  • \ u { HEX DIGIT SEQUENCE }是代表的unicode标量值   通过 HEX DIGIT SEQUENCE 。如果这是一个编译时错误    HEX DIGIT SEQUENCE 的值不是有效的unicode标量   值。
  •