标签: astral-plane

在OS X中,如何使用标准输入法编辑器输入二维Unicode字符?

我想测试我的Cocoa应用程序正确处理基本多语言平面之外的输入,并且复制粘贴它是不可能的.我不知道如何键入BMP之外的角色!我已经设置日语作为输入源,并且能够通过键入日语单词来获得随机片假名或平假名,但该技巧对于2号平面字符不起作用.粘贴字符会解雇输入法编辑器,因此也不起作用.我想我实际上需要在我的美式英语键盘上输入正确的键击到某种语言的输入源(中文,大概是一个不错的选择).如果不明显,我不会说任何亚洲语言.

以下是第二个平面中某些字符的示例:http://www.unicode.org/cgi-bin/UnihanGrid.pl? codepoint = 20000

只要我能用我拥有或可以免费获得的字体渲染字形,我的目的就可以接受0xffff以上的任何unicode字符.

unicode macos input astral-plane

6
推荐指数
1
解决办法
1390
查看次数

如何输入4字节的UTF-8字符?

我正在编写一个小应用程序,我需要使用不同字节长度的utf-8字符进行测试.

我可以输入unicode字符进行测试,用utf-8编码1,2,3个字节就好了,例如:

string in = "pi = \u3a0";
Run Code Online (Sandbox Code Playgroud)

但是如何获得用4字节编码的unicode字符?我试过了:

string in = "aegan check mark = \u10102";
Run Code Online (Sandbox Code Playgroud)

据我所知,应该输出.但是当我打印出来时,我得到了ᴶ0

我错过了什么?

编辑:

我通过添加前导零来实现它:

string in = "\U00010102";
Run Code Online (Sandbox Code Playgroud)

希望我早点想到这个:)

c++ unicode utf-8 astral-plane

5
推荐指数
1
解决办法
5983
查看次数

Java对正则表达式库中的非BMP Unicode字符(即代码点> 0xFFFF)的支持?

我目前正在使用Java 6(我没有选择转移到Java 7),我正在尝试使用java.util.regex包来对包含Unicode字符的字符串进行模式匹配.

我知道java.lang.String支持补充字符(即代码点> 0xFFFF的字符)(自Java 5起),但我没有看到一种简单的方法来与这些字符进行模式匹配.java.util.regex.Pattern仍然只允许使用4位数表示十六进制数(例如\ uFFFF)

有谁知道我在这里错过了一个API吗?

java regex unicode astral-plane

5
推荐指数
1
解决办法
2358
查看次数

字符串和4字节Unicode字符

我在C#中有一个关于字符串和字符的问题.我发现C#中的字符串是一个Unicode字符串,而char需要2个字节.所以每个char都采用UTF-16编码.这很好,但我也在维基百科上读到有些字符在UTF-16中占用4个字节.

我正在做一个程序,可以让你为字母数字显示绘制字符.在程序中还有一个测试器,你可以在其中编写一些字符串,它会为你绘制它以查看它的外观.

所以我应该如何使用字符串,用户写入一个占用4个字节的字符,即2个字符.因为我需要通过字符串char来char,所以在列表中找到这个char,并将其绘制到面板中.

c# string unicode astral-plane

5
推荐指数
1
解决办法
2095
查看次数

如何在Rebol 3字符串中使用U + FFFF以上的Unicode代码点,如Rebol 2?

我知道你不能在Rebol 2中使用大于^(FF)的代码点在字符串中使用插入符号样式,因为它对Unicode没有任何了解.所以这不会产生任何好处,它看起来搞砸了:

print {Q: What does a Zen master's {Cow} Say?  A: "^(03BC)"!}
Run Code Online (Sandbox Code Playgroud)

然而代码在Rebol 3中工作并打印出来:

Q: What does a Zen master's {Cow} Say?  A: "?"!
Run Code Online (Sandbox Code Playgroud)

这很好,但是R3最大限度地发挥了它在U + FFFF中保持字符串的能力显然:

>> type? "^(FFFF)"
== string!

>> type? "^(010000)"
** Syntax error: invalid "string" -- {"^^(010000)"}
** Near: (line 1) type? "^(010000)"
Run Code Online (Sandbox Code Playgroud)

当Rebol 2遇到它不知道的代码点时,情况要好于Rebol 2的随机行为.但是,如果您知道如何进行自己的UTF-8编码(或通过从磁盘加载源代码获取字符串),Rebol中常常会有一种解决方法来存储字符串.你可以从个别角色组装它们.

所以U + 010000的UTF-8编码是#F0908080,你可以说:

workaround: rejoin [#"^(F0)" #"^(90)" #"^(80)" #"^(80)"]
Run Code Online (Sandbox Code Playgroud)

并且您将获得一个使用UTF-8编码的单个代码点的字符串,您可以在代码块中保存到磁盘并再次读回.R3中有类似的技巧吗?

unicode rebol rebol3 rebol2 astral-plane

5
推荐指数
1
解决办法
717
查看次数

在javascript中删除各种范围内的Unicode字符

我试图删除字符串中的每个Unicode字符,如果它落在下面的任何范围内.

\uD800-\uDFFF
\u1D800-\u1DFFF
\u2D800-\u2DFFF
\u3D800-\u3DFFF
\u4D800-\u4DFFF
\u5D800-\u5DFFF
\u6D800-\u6DFFF
\u7D800-\u7DFFF
\u8D800-\u8DFFF
\u9D800-\u9DFFF
\uAD800-\uADFFF
\uBD800-\uBDFFF
\uCD800-\uCDFFF
\uDD800-\uDDFFF
\uED800-\uEDFFF
\uFD800-\uFDFFF
\u10D800-\u10DFFF
Run Code Online (Sandbox Code Playgroud)

作为初始原型,我试图通过在replace函数中使用正则表达式来删除第一个范围内的字符.

var buffer = "he\udfffllo world";
var output = buffer.replace(/[\ud800-\udfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,角色似乎已被替换为罚款.

但是,当我用它替换它

var buffer = "he\udfffllo worl\u1dfffd";
var output = buffer.replace(/[\ud800-\udfff\u1d800-\u1dfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
Run Code Online (Sandbox Code Playgroud)

我看到一些意外的事情 我的输出显示为:

hellloworl᷿fd被替换为

这里有两点需要注意:

  1. \u1dfff不显示为一个字符 - \u1dff转换为字符,f最后它被视为自己的字符
  2. 结果是一个空字符串.

关于如何实现这一目标的任何建议都将非常感激.


编辑

我的总体目标是过滤掉 …

javascript regex unicode replace astral-plane

5
推荐指数
1
解决办法
6191
查看次数

Mysql服务器不支持4字节编码的utf8字符

我收到了从Sql Server到MySql db运行数据传输组件的服务器错误.错误消息如下:

[MySql][ODBC 5.1 Driver][mysqld-5.0.67-community-nt-log]Server does not support 4-byte encoded UTF8 characters.

源Sql Server表包含nvarchar列,目标MySql表包含varchar列.

任何人都可以对这个问题有所了解吗?

mysql character utf-8 utf8mb4 astral-plane

4
推荐指数
1
解决办法
1万
查看次数

将字符串转换为其代码点

我必须将大量字符转换为它们的Unicode Code Point等价物.我使用以下代码进行此转换:

string sample = "b";
int utf32 = char.ConvertToUtf32(sample, 0);
string codePoint = string.Format("{0:X}", utf32);
Run Code Online (Sandbox Code Playgroud)

这适用于更普通的字符,但后来我有这样的字符,a?其中实际字符串包含2个字符a (U-0061)'?' (U-030C).ConverToUtf32(string, int)那里的函数只返回我实际期待的第一个(或另一个取决于索引)字符U-0103.使用ConvertToUtf32(char, char)不起作用,因为它需要更高代码点的字符.

我可以使用另一个函数将字符串转换为代码点,还是可以执行的计算?

.net c# unicode astral-plane

3
推荐指数
1
解决办法
1392
查看次数

如何在 C# 控制台中显示扩展 Unicode 字符?

我正在尝试显示一组扑克牌,其 Unicode 值在 1F0A0 到 1F0DF 范围内。每当我尝试在代码中使用超过 4 个字符的字符时,我都会收到错误。在这种情况下可以使用这些字符吗?我正在使用 Visual Studio 2012。

char AceOfSpades = '\u1F0A0'; 键入后立即出现错误“字符文字中的字符过多”,这仍然显示为 Unicode 或 UTF8 编码。如果我尝试像上面那样显示 '\u1F0A'...使用 Unicode 它会显示 '?' 对于 UTF8,它显示 3 个字符。

我尝试了所有给定的 OutputEncoding string AceOfSpades = "\U0001F0A0"; Default, Unicode, ASCII: ?? UTF7: +2DzcoA- UTF8: 四个奇怪字符 UTF32 , BigEndianUnicode: IOException 选项 Console.OutputEncoding = System.Text.Encoding.UTF32;,尽管是一个选项,但即使它是唯一的代码行也会崩溃。UTF16 不在列表中。

如何查看我正在使用的 Unicode 版本?

c# unicode astral-plane

1
推荐指数
1
解决办法
9316
查看次数

当使用UTF-8编码时,是否有一种语言需要每个字符三个或更多字节?哪个?

常用的ofc,克林贡不算:-)

谢谢,伙计们,让我运行willItFit()测试用例

好的,现在我想出了UTF-8的保存字节导致的问题多于解决问题,再次感谢

utf-8 astral-plane

0
推荐指数
2
解决办法
1537
查看次数

标签 统计

astral-plane ×10

unicode ×8

c# ×3

utf-8 ×3

regex ×2

.net ×1

c++ ×1

character ×1

input ×1

java ×1

javascript ×1

macos ×1

mysql ×1

rebol ×1

rebol2 ×1

rebol3 ×1

replace ×1

string ×1

utf8mb4 ×1