如何使用 Node 从 MySQL 中读取非拉丁字符?
How to read non-latin characters from MySQL using Node?
我有一个查询 MySQL 数据库并将结果写入文件的节点应用程序。
查询结果是一段翻译成世界上大多数语言的文本。
我的问题是大多数非 ASCII 字符无法正确显示。例如
Wir möchten
写入文件为:
Wir möchten
这是我连接到数据库的方式:
const mysql = require("mysql");
const connection = mysql.createConnection({
host: "",
user: "",
password: "",
database: "",
charset: "utf8", // I have tried 'utf8'/'latin1'/'BIG5'
});
这是将查询结果写入文件的函数:
query(sql, (err, data) => {
fs.writeFile("x.json", JSON.stringify(data), "utf8", function (err) {
if (err) throw err;
console.log("Saved!");
});
});
我最终找到了一种适用于 MySQL SELECT
语句级别的方法:
SELECT CONVERT(CAST(CONVERT(column_name USING LATIN1) AS BINARY) USING UTF8) AS column_name from table_name;
我将上述语句用作我的节点应用程序的输入,它适用于我需要的所有字母表(拉丁文、西里尔文、中文...等)。
Source.
ö
是 ö
的“Mojibake”。在
中查看 Mojibake
至于正确修复数据的方法,请从这里的 7 种情况中选择正确的情况:http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases
请注意,“双重编码”与“Mojibake”不同。
我有一个查询 MySQL 数据库并将结果写入文件的节点应用程序。
查询结果是一段翻译成世界上大多数语言的文本。
我的问题是大多数非 ASCII 字符无法正确显示。例如
Wir möchten
写入文件为:
Wir möchten
这是我连接到数据库的方式:
const mysql = require("mysql");
const connection = mysql.createConnection({
host: "",
user: "",
password: "",
database: "",
charset: "utf8", // I have tried 'utf8'/'latin1'/'BIG5'
});
这是将查询结果写入文件的函数:
query(sql, (err, data) => {
fs.writeFile("x.json", JSON.stringify(data), "utf8", function (err) {
if (err) throw err;
console.log("Saved!");
});
});
我最终找到了一种适用于 MySQL SELECT
语句级别的方法:
SELECT CONVERT(CAST(CONVERT(column_name USING LATIN1) AS BINARY) USING UTF8) AS column_name from table_name;
我将上述语句用作我的节点应用程序的输入,它适用于我需要的所有字母表(拉丁文、西里尔文、中文...等)。
Source.
ö
是 ö
的“Mojibake”。在
至于正确修复数据的方法,请从这里的 7 种情况中选择正确的情况:http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases
请注意,“双重编码”与“Mojibake”不同。