【发布时间】:2020-10-08 23:23:58
【问题描述】:
假设我们有一个 UTF-8 字符串(由字符形式的十六进制字节字符串表示),其中可能包含表情符号或任何其他 Unicode 字符。我们如何将字符串表示为 JavaScript 中的文字以在 alert 函数中使用?在 PHP 中,有两种简单的方法:(1)"\xE2\x96\xB6"(2)hex2bin('E296B6')。我在纯 JavaScript 中做同样的事情时遇到了麻烦。 '\xE2\x96\xB6' 似乎不起作用(它在 alert 函数中显示段落标记而不是直角实心三角形)。
我曾想过编写一个“hex2bin”函数以将参数作为十六进制字节字符串返回,但 JavaScript 没有这样的数据类型。在 PHP 中,字符串可以包含任何位模式,但我认为这不适用于 JavaScript。
我知道 JavaScript 是一种支持 Unicode 的现代语言,所以必须有一种简单的方法来做到这一点。
请注意,任何关于 \u 构造的答案都是错误的,因为 \u 不接受 UTF-8 字符串。 UTF-8 目前是大多数字符串存储的标准和推荐,但大多数编程语言还没有为 UTF-8 字节字符串提供简单的文字语法。
当程序员谈论 Unicode 的低级表示时,他们经常对 UTF-8 感兴趣,因为它是标准且高效的编码。 UTF-16 和 Unicode 代码点(以及许多奇怪的编码)很有趣,特别是对于命名字符(U+HHHH 表示法)和以固定宽度表示它们。但是标准是 UTF-8,我们需要更多关于 Stack Overflow 的答案来帮助我们使用 UTF-8。
【问题讨论】:
-
这能回答你的问题吗? Insert Unicode character into JavaScript
-
只写
'▶'。 (或者'\u25B6',如果您不信任您的文件编码。) -
\u25B6看起来像一个 Unicode 代码点(所有 Unicode 字符列表中的实际索引)。这不是 UTF-8。 UTF-8 的全部优势在于它使用最少的字节来编码每个 Unicode 字符,即使是只有一个字节或六个或更多字节的字符。 -
@Bergi 将此问题作为重复项关闭。他错了,但我没有办法回复他。他引用的问题只有 Unicode 代码点答案 (\u),根本不处理 UTF-8。
-
@DavidSpector 您在 cmets 中对我的回复很好 :-) 您的问题是“我们如何在 JavaScript 中将字符串表示为文字以用于警报功能?”,答案是将您的脚本编码为 UTF-8 并直接嵌入
'▶',正如重复目标所指出的那样。目前还不清楚您还在寻找什么。也许edit 你的问题是为了澄清你所说的“我们有一个 UTF-8 字符串”是什么意思。你在哪里拥有它,你想用它做什么?
标签: javascript unicode