Probé el siguiente código:
console.log(JSON.stringify({ test: "\u30FCabc" }));Da la salida a continuación:
'{"test":"ーabc"}' Sabemos que principalmente el método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena JSON. Y según JSON std ( https://www.json.org/json-en.html ) deberíamos poder almacenar \u30FC . Entonces, ¿por qué "\u30FC" se convierte en "ー" ?
Entonces, ¿por qué "\u30FC" se convierte en "ー"?
JSON.stringifyJSON.stringify codifica el objeto como JSON y lo representa comoーliteral porqueーse JSON.stringify de tal manera que se prefieren los caracteres literales a las secuencias de escape donde el formato de datos JSON lo permite.Algunos codificadores JSON le permiten controlar esto, por ejemplo, en PHP, compare:
<?php echo json_encode('ーabc', JSON_UNESCAPED_UNICODE); ?>y
<?php echo json_encode('ーabc'); ?> … pero JSON.stringify de JavaScript no tiene esa opción.