Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get UTF-8 in Node.js?

How do I get UTF-8 support on my API? At the moment, a string outputs like this:

name: "John D�m" 

Instead of:

name: "John Döm" 

Checkout app.js below:

var express = require('express'),     driver = require('./driver');  var app = express();  app.configure(function () {     app.use(express.logger('dev'));     app.use(express.bodyParser()); });  app.get('/drivers', driver.findAll);  app.listen(3000); console.log('Up: http://127.0.0.1:3000/'); 
like image 799
Jack Avatar asked Apr 28 '13 20:04

Jack


People also ask

What is utf8 in node JS?

Overview. In this guide, you can learn how to enable or disable the Node. js driver's UTF-8 validation feature. UTF-8 is a character encoding specification that ensures compatibility and consistent presentation across most operating systems, applications, and language character sets.

How do I encode a string to UTF 8 in Node?

var someEncodedString = Buffer. from('someString', 'utf-8'). toString(); This avoids any unnecessary dependencies that other answers require, since Buffer is included with node.

Are JavaScript strings UTF 8?

While a JavaScript source file can have any kind of encoding, JavaScript will then convert it internally to UTF-16 before executing it. JavaScript strings are all UTF-16 sequences, as the ECMAScript standard says: When a String contains actual textual data, each element is considered to be a single UTF-16 code unit.

Does JavaScript use UTF 8 or UTF-16?

Most JavaScript engines use UTF-16 encoding, so let's detail into UTF-16. UTF-16 (the long name: 16-bit Unicode Transformation Format) is a variable-length encoding: Code points from BMP are encoded using a single code unit of 16-bit. Code points from astral planes are encoded using two code units of 16-bit each.


2 Answers

Hook into you response generator or create a middleware that does the following:

res.header("Content-Type", "application/json; charset=utf-8"); 

Otherwise the browser displays the content in his favorite encoding.

If this doesn't help you DB is probably in the wrong encoding.

Edit: Since the answer is nearly 5 years old, the API has changed. For current node.js versions use:

res.setHeader("Content-Type", "application/json; charset=utf-8"); 
like image 75
TheHippo Avatar answered Oct 04 '22 17:10

TheHippo


I can't solve this problem with setting content type. I solved this problem with encode function.

res.cookie('someCookie', someCookie, {   encode: c => c, }); 

For more information: express cookie

ExpressJS version: 4.16.4

like image 44
Murat Ersin Avatar answered Oct 04 '22 18:10

Murat Ersin