V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xoxo419
V2EX  ›  程序员

javascript 的 fromCharCode 如何实现 PHP chr 127 位之后的 ascii 转换?

  •  
  •   xoxo419 · 2017-10-18 14:10:30 +08:00 · 2673 次点击
    这是一个创建于 2382 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搜索找到这样一段代码

    function test(){  
      var c="";  
      for(var i=1;i<65536;i++){  
    
        if((i%10)==0){  
    
             c+=i+':\t'+String.fromCharCode(i)+'\t'+'\n';
    
        } else {  
    
             c+=i+':\t'+String.fromCharCode(i)+'\t';}  
      }  
         document.write(String.fromCharCode(i));
    }
    

    else 上下也没有什么不一样的, 为什么可以转 127 之后?

    1 条回复    2017-10-18 15:16:44 +08:00
    lonelinsky
        1
    lonelinsky  
       2017-10-18 15:16:44 +08:00
    多谢 lz,顺便去开了下眼界。

    lz 贴的代码的最后一行应该是写错了,应该是 document.write(c);

    首先这个问题直接查 fromCharCode 的文档就可以得到答案了,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode 可以看到 fromCharCode 接受的参数是一个 unicode 值,处理 127 以后当然没问题啦。

    开眼界的地方在于后续查了 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint 然后看到现在 Unicode 已经是 U+0000-U+U+10FFFF 了,然后对于大于 U+FFFF 的是使用 UTF-16 surrogate pairs 来实现的,然后再 js 里面就会出现只有一个字符的字符串,但是字符串长度是 2 的情况…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1451 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:40 · PVG 01:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.