如果python代替javascript_用JavaScript代替Python的chr()

事实证明,您只想使用node.js中的原始字节there's a module for that。如果你是一个真正的巫师,你可以让这些东西单独使用javascript字符串,但它更难,而且效率低得多。

var b = new Buffer(1);

b[0] = 213;

console.log(b.toString()); //�

var b = new Buffer(3);

b[0] = 0xE2;

b[1] = 0x98;

b[2] = 0x85;

console.log(b.toString()); //★

print chr(213) # prints � on the console

因此,这将打印一个原始字节(0xD5),该字节以UTF-8(最有可能)解释,它不是有效的UTF-8字节序列,因此显示为替换字符( )。

UTF-8的解释与此无关,您很可能只想要原始字节。

要在javascript中创建原始字节,您可以使用UInt8Array。

var a = new Uint8Array(1);

a[0] = 213;您可以选择将原始字节解释为utf-8:

console.log( utf8decode(a)); // "�"

//Not recommended for production use ;D

//Doesn't handle > BMP to keep the answer shorter

function utf8decode(uint8array) {

var codePoints = [],

i = 0,

byte, codePoint, len = uint8array.length;

for (i = 0; i < len; ++i) {

byte = uint8array[i];

if ((byte & 0xF8) === 0xF0 && len > i + 3) {

codePoint = ((byte & 0x7) << 18) | ((uint8array[++i] & 0x3F) << 12) | ((uint8array[++i] & 0x3F) << 6) | (uint8array[++i] & 0x3F);

if (!(0xFFFF < codePoint && codePoint <= 0x10FFFF)) {

codePoints.push(0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD);

} else {

codePoints.push(codePoint);

}

} else if ((byte & 0xF0) === 0xE0 && len > i + 2) {

codePoint = ((byte & 0xF) << 12) | ((uint8array[++i] & 0x3F) << 6) | (uint8array[++i] & 0x3F);

if (!(0x7FF < codePoint && codePoint <= 0xFFFF)) {

codePoints.push(0xFFFD, 0xFFFD, 0xFFFD);

} else {

codePoints.push(codePoint);

}

} else if ((byte & 0xE0) === 0xC0 && len > i + 1) {

codePoint = ((byte & 0x1F) << 6) | ((uint8array[++i] & 0x3F));

if (!(0x7F < codePoint && codePoint <= 0x7FF)) {

codePoints.push(0xFFFD, 0xFFFD);

} else {

codePoints.push(codePoint);

}

} else if ((byte & 0x80) === 0x00) {

codePoints.push(byte & 0x7F);

} else {

codePoints.push(0xFFFD);

}

}

return String.fromCharCode.apply(String, codePoints);

}您最有可能尝试做的事情与尝试将字节解释为utf8无关。

另一个例子:

//UTF-8 For the black star U+2605 ★:

var a = new Uint8Array(3);

a[0] = 0xE2;

a[1] = 0x98;

a[2] = 0x85;

utf8decode(a) === String.fromCharCode(0x2605) //True

utf8decode(a) // ★在python 2.7(Ubuntu)中:

print chr(0xE2) + chr(0x98) + chr(0x85)

#prints ★

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值