【问题标题】:Converting text to Unicode in javascript在javascript中将文本转换为Unicode
【发布时间】:2019-06-07 16:22:59
【问题描述】:

我有以下几点:

function showUnicode()
{
  var text = prompt( 'Enter the wanted text', 'Unicode' ),
      unicode = 0,
      ntext,
      temp,
      i = 0
  ;

  // got the text now transform it in unicode
  for(i; i < text.length; i++)
  {
    unicode += text.charCodeAt(i)

  }

  // now do an alert
  alert( 'Here is the unicode:\n' + unicode + '\nof:\n' + text )

}

感谢初始化 unicode 的想法,但现在 unicode 变量获取最后一个字符的 Unicode,为什么会这样?

【问题讨论】:

  • unicode 没有初始化,所以是undefined。在第一次迭代中,你基本上是在做undefined + someNumberundefined is converted to NaN
  • charCodeAt 返回一个表示 unicode 代码点值的整数。如果按原样将它们相加,您将得到“1+2+3=6”的等价物,而不是“123”。
  • 无需屏蔽您的 JavaScript 块:
  • 一个好的做法 - 用分号结束每个语句。
  • 现在我将 unicode 初始化为 0,但它只显示最后一个字符的 unicode

标签: javascript unicode


【解决方案1】:

JavaScript uses UCS-2 internally.

这意味着补充 Unicode 符号作为两个单独的代码单元(代理部分)公开。例如,'?'.length == 2,即使它只有一个 Unicode 字符。

因此,如果您想获取字符串中每个字符的 Unicode 代码点,您需要将 UCS-2 字符串转换为 UTF-16 代码点数组(其中每个代理对形成一个单个代码点)。您可以为此使用Punycode.js 的实用函数:

punycode.ucs2.decode('abc'); // [97, 98, 99]
punycode.ucs2.decode('?'); // [119558]

【讨论】:

    【解决方案2】:

    您应该将unicode 变量初始化为某个值,或者将字符代码添加到undefined

    【讨论】:

      【解决方案3】:

      NaN = 不是数字

      需要将“unicode”初始化为数字类型:

      var unicode = 0
      

      【讨论】:

        猜你喜欢
        • 2020-12-30
        • 2011-05-07
        • 2020-02-20
        • 1970-01-01
        • 2015-07-26
        • 2020-01-09
        • 2015-12-26
        • 2018-04-11
        相关资源
        最近更新 更多