กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็ ็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้
这些最近出现在Facebook评论部分.
我们怎样才能消毒这个?
我已经了解了Zalgo文本是如何工作的,我正在研究如何通过聊天或论坛软件来防止这种烦恼.更确切地说,需要的完整的Unicode组合字符是什么:
a)要么被剥离,假设聊天参与者只使用不需要组合标记的语言(即你可以用组合标记写"未婚夫",但是如果你坚持做的话,你自己会有点Zalgo'ed所以); 要么,
编辑:与此同时,我发现了一个完全不同的措辞问题(" 如何防止......变音符号? "),这与此基本相同.我让它的标题更明确,所以其他人也会发现它.
在Unicode中"组合字符"和"字形扩展器"之间有什么区别?
就我所知,他们似乎做了同样的事情 - 尽管一组字形扩展器比组合字符组大.我在这里显然遗漏了一些东西.为什么区别?
我正在使用Java编写文件名列表.
我观察到文件名中的一些单个字符,如a,ö和ü实际上包含一个序列,您可以将其描述为后续的两个单个ASCII字符:
ö由...表示o,¨
我通过检查看到了这个codePointAt().德语名称"Rölli"实际上是"Ro¨lli":
...
20: R, 82
21: o, 111
22: ?, 776
23: l, 108
24: l, 108
25: i, 105
...
Run Code Online (Sandbox Code Playgroud)
¨上面日志中的字符的值为776,即"组合分离".这是一种所谓的组合标记,属于字形,或者更确切地说是组合变音符号.所以这一切都有道理,但我不明白什么软件组件将两个字符组合到一个变音符号,以及指定此行为的位置.
print()的字符串都会显示组合字符,因此它不是上面的某个UI层.什么组件导致组合字符显示为单个组合字符?这一切有多可靠?
Java是一种规范化方法,可以生成组合代码点的单个代码点,就像这里一样吗?对使用正则表达式有帮助...
非常感谢任何提示.
java string character-encoding unicode-normalization combining-marks
我正在开发一个项目,需要输入旧的韩文音节块(即使用过时字符的韩文音节块,例如 \xe3\x86\x85 和 \xe3\x85\xbf,位于 Hangul Compatibility Jamo 中unicode 块),但我一直很难将这些块显示为整个块(如 \xeb\xa3\xb0),而不是一串分隔的字形(如 \xe1\x85\x98\xe1\x86\ x87\xe1\x87\x88)。显然,字符串 \xe3\x84\xb1\xe3\x85\x8f\xe3\x85\x81、\xea\xb0\x80\xe3\x85\x81 和 \xea\xb0\x90 彼此等效,但是韩文字体的“GSUB 特征”在不同程度上将它们联系在一起。根据我收集的信息,类似的过程也适用于 Hangul Jamo,其中猜测元音后面的块将如何形成(就像 \xe3\x84\xb1 之间的区别) xea\xb5\xac 和 \xea\xb8\xb0) 以及它是否有结尾辅音(如 \xea\xb0\x80 和 \xea\xb0\x88 中的 \xe3\x84\xb1 之间的区别)。
\n\n我想这类似于组合变音符号的工作方式,其中它会猜测大写 A\xcc\x81 和小写 a\xcc\x81 的高度差。有很多拉丁字体不支持组合字符,考虑到虽然 \xe3\x84\xb1\xe3\x85\x8f\xe3\x85\x81、\xea\xb0\x80\xe3\x85\x81、和 \xea\xb0\x90 是相等的,最后 \xea\xb0\x90 是一个预组合字符,Hangul Jamo unicode 块的整个目的是(根据维基百科上的文章)“动态地用于组成在 Unicode 中无法作为预先组成的韩文音节使用的音节,特别是包含后来在现代发音中与其他声音在语音上合并的声音的古老音节。” 这让我想知道 Hangul Jamo 的行为是否更像空间修改字符,需要 { EQ \\o(X1,X2) } 与各自的字符组合。
\n\n我读过的大部分内容都是关于字体设计和命令行的,这使得作者所做的不仅仅是在文字处理器上输入过时的字符,但你看: https: //github.com/adobe -fonts/source-han-sans/issues/34。发帖者和评论员正在尝试找出垂直形式的韩文字字组成,但他们已经在文字处理程序中水平组成了音节块,但无处可寻。
\n我正在寻找一种方法来检测java字符串中的字符是否是"组合字符".例如,
String khmerCombiningVowel =
new String(new byte[]{(byte) 0xe1,(byte) 0x9f,(byte) 0x80}, "UTF-8"); // unicode 17c0
Run Code Online (Sandbox Code Playgroud)
代表结合高棉元音符号.我尝试过"\\p{InCombiningDiacriticalMarks}" 正则表达式,但它似乎不适用于这些特殊的组合字符.或者即使有一些所有unicode组合字符块的综合列表,我也可以为它们制作一个正则表达式?
unicode ×5
java ×2
zalgo ×2
asianfonts ×1
diacritics ×1
grapheme ×1
input ×1
javascript ×1
ms-word ×1
regex ×1
sanitize ×1
string ×1
terminology ×1