JavaScript:从UTF-8值创建字符串或字符

时间:2013-06-12 03:52:08

标签: javascript utf-8 data-conversion

this相同的问题,但使用UTF-8而不是ASCII

在JavaScript中,如何获得UTF-8值的字符串表示?

e.g。如何将“c385”变成“Å”?

或如何将“E28093”变成“ - ”(m破折号)?

或如何将“E282AC”变成“€”(欧元符号)?

我的问题不是Hex2Asc的重复。您可以自己看看:hex2a(“E282AC”)会将字符串转换为“â”而不是将其转换为“€”(欧元符号)!!

2 个答案:

答案 0 :(得分:3)

我认为这会做你想做的事情:

function convertHexToString(input) {

    // split input into groups of two
    var hex = input.match(/[\s\S]{2}/g) || [];
    var output = '';

    // build a hex-encoded representation of your string
    for (var i = 0, j = hex.length; i < j; i++) {
        output += '%' + ('0' + hex[i]).slice(-2);
    }

    // decode it using this trick
    output = decodeURIComponent(output);

    return output;
}

console.log("'" + convertHexToString('c385') + "'");   // => 'Å'
console.log("'" + convertHexToString('E28093') + "'"); // => '–'
console.log("'" + convertHexToString('E282AC') + "'"); // => '€'

<强> DEMO

<强>现金:

答案 1 :(得分:1)

var hex = "c5";
String.fromCharCode(parseInt(hex, 16));

您必须使用c5,而不是c3 85参考:http://rishida.net/tools/conversion/

了解有关代码点和代码单元的更多信息

  1. http://en.wikipedia.org/wiki/Code_point
  2. http://www.coderanch.com/t/416952/java/java/Unicode-code-unit-Unicode-code