gpt4 book ai didi

javascript - 在 node.js 中从数据库中获取非英文字符时出现编码问题

转载 作者:行者123 更新时间:2023-11-29 07:37:09 25 4
gpt4 key购买 nike

在 Node js 中,我有非常简单的代码来向数据库发出请求:

var mysql      = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: "databasename"
});

connection.connect();

connection.query('SELECT * FROM main_categories', function (error, results, fields) {
if (error) throw error;
console.log(results);
});

connection.end();

我正在使用此 sql 脚本创建数据库和表:

CREATE DATABASE databasename
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

CREATE TABLE main_categories (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

当我尝试在 mysql 控制台中选择代码时,一切看起来都不错,但是当我尝试在 node.js 中获取结果时,在控制台日志中我看到的是这样的:

[ RowDataPacket { id: 1, name: 'Візочки' },
RowDataPacket { id: 2, name: 'ДитÑчий транÑпорт' },
RowDataPacket { id: 3, name: 'ÐвтокріÑла' },
RowDataPacket { id: 4, name: 'Іграшки' },
RowDataPacket { id: 5, name: 'ДитÑча кімната' },
RowDataPacket { id: 6, name: 'Ð’Ñе Ð´Ð»Ñ Ð³Ð¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ' },
RowDataPacket { id: 7, name: 'ÐкÑеÑуари Ð´Ð»Ñ Ð¼Ð°Ð¼' },
RowDataPacket { id: 8, name: 'Гігієна та доглÑд' } ]

我尝试在使用 mysql.createConnection 和任何其他解决方案时在配置对象中添加 charset,但不幸的是没有结果。

UPD:查看数据库变量可能会有所帮助:

mysql> SHOW variables WHERE variable_name LIKE '%coll%' OR variable_name LIKE '%char%';
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.19-macos10.12-x86_64/share/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+--------------------------+-----------------------------------------------------------+

最佳答案

Ð'ізочкиMojibake对于 Візочки。当您到处都没有 utf8/utf8mb4 时,就会发生这种情况。特别是,node.js 需要像

var connection = mysql.createConnection({ ... , charset : 'utf8mb4'});

关于javascript - 在 node.js 中从数据库中获取非英文字符时出现编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com