gpt4 book ai didi

javascript - 如何使用 javascript/nodejs 从 latin1 (iso-8859-1) 数据库获取数据?

转载 作者:行者123 更新时间:2023-11-29 15:43:52 25 4
gpt4 key购买 nike

我有一个旧的 mysql 数据库(mysql 5.0.2),位于 latin1 中,我想从中获取数据。对于非 ascii 字符,我总是得到相同的输出(例如, 、 À 和 Á 被表示为十六进制的“ef bf bd”),也就是说不同的字符以相同的方式表示。

我只需要以不同的方式获取这些字符,这样我就可以将每个字符映射到正确的对应 utf-8 字符。

我已经尝试更改字符集,但它对我不起作用!

有人可以帮我获取一些有意义的数据吗?

var mysql = require('mysql')

var con = mysql.createConnection({
host: "localhost",
user: "root",
//charset: "utf8mb4",
//charset: "utf8",
charset: "latin1",
database : 'my_db'
})

con.connect()

var query = con.query("SELECT data from my_table where id='07'", function
(error, results, fields) {
var b = Buffer.from (results[0].data)
console.log ('Retrieved data in hex -> ', b)
})

con.end()

当我进入数据库并将数据更新为某些仅包含 ascii 的字符串时,我可以毫无问题地在 js 中获取数据,但是当我将该数据替换为“á”或“à”之类的内容时,我得到始终为十六进制的“ef bf bd”(十进制为-17 -65 -67)。

最佳答案

拉丁语1十六进制EF BF BD翻译为� 。也许你指的是一个BOM(Byte-Order-Mark),即EF BB BF,看起来像 。请参阅http://mysql.rjweb.org/doc.php/charcoll#bom_byte_order_mark .

、 À 和 Á 经常在混合不当时出现 latin1utf8 .

为了进一步讨论,请提供十六进制和字符的文本片段。和/或参见Trouble with UTF-8 characters; what I see is not what I stored用于解决常见问题。

哦! MySQL 4.0 没有字符集的概念。您可以存储和获取字符串,而无需对其进行任何测试或发生任何事情。然而,类似 LENGTH() 的东西提供字节计数,而不是字符计数。并且不等式字符串比较 ( col_a < col_b ) 不会为非 ascii 字符提供合理的结果。

在 PHP 中对您的 Angular 色什么都不做可能是安全的。只需将它们喂入或喂出VARCHAR即可/TEXT (或 BLOB )列。

关于javascript - 如何使用 javascript/nodejs 从 latin1 (iso-8859-1) 数据库获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57289591/

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