Search code examples
node.jsutf-8

Nodejs convert string into UTF-8


From my DB im getting the following string:

Johan Öbert

What it should say is:

Johan Öbert

I've tried to convert it into utf-8 like so:

nameString.toString("utf8");

But still same problem.

Any ideas?


Solution

  • Use the utf8 module from npm to encode/decode the string.

    Installation:

    npm install utf8
    

    In a browser:

    <script src="utf8.js"></script>
    

    In Node.js:

    const utf8 = require('utf8');
    

    API:

    Encode:

    utf8.encode(string)
    

    Encodes any given JavaScript string (string) as UTF-8, and returns the UTF-8-encoded version of the string. It throws an error if the input string contains a non-scalar value, i.e. a lone surrogate. (If you need to be able to encode non-scalar values as well, use WTF-8 instead.)

    // U+00A9 COPYRIGHT SIGN; see http://codepoints.net/U+00A9
    utf8.encode('\xA9');
    // → '\xC2\xA9'
    // U+10001 LINEAR B SYLLABLE B038 E; see http://codepoints.net/U+10001
    utf8.encode('\uD800\uDC01');
    // → '\xF0\x90\x80\x81'
    

    Decode:

    utf8.decode(byteString)
    

    Decodes any given UTF-8-encoded string (byteString) as UTF-8, and returns the UTF-8-decoded version of the string. It throws an error when malformed UTF-8 is detected. (If you need to be able to decode encoded non-scalar values as well, use WTF-8 instead.)

    utf8.decode('\xC2\xA9');
    // → '\xA9'
    
    utf8.decode('\xF0\x90\x80\x81');
    // → '\uD800\uDC01'
    // → U+10001 LINEAR B SYLLABLE B038 E
    

    Resources