F#.Net可移植子集Unicode问题

Ed *_*ers 2 unicode f# portable-class-library

好吧,我在VS2012中创建了一个F#可移植库项目,并且我有一些代表Utf-32编码字符的整数,例如:0x0001D538这是一个双击A.通常要将它变成Utf-16代理对,你会使用System.Char.ConvertFromUtf32(i),工作完成.但是,Microsoft已经决定不在.net可移植子集中包含此方法.(它在交互式窗口中运行良好,必须运行完整的.net).那么,我应该怎样做才能从这些整数中获得我最喜欢的代理对?它们需要是整数,因为我对它们进行了一些算术运算.等待下一个版本的东西出来是一个可行的选择.

Dan*_*iel 5

这是从Reflector快速翻译C#.你能用这个吗?

type System.Char with
  static member ConvertFromUtf32(utf32) =
    if utf32 < 0 || utf32 > 0x10ffff || (utf32 >= 0xd800 && utf32 <= 0xdfff) then
      invalidArg "utf32" "Out of range"
    elif utf32 < 0x10000 then 
      new String(char utf32, 1)
    else
      let utf32 = utf32 - 0x10000
      new String([| char ((utf32 / 0x400) + 0xd800); char ((utf32 % 0x400) + 0xdc00) |])
Run Code Online (Sandbox Code Playgroud)