Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中htmlspecialchars的Node.js等效项_Php_Mysql_Node.js_Ejs - Fatal编程技术网

php中htmlspecialchars的Node.js等效项

php中htmlspecialchars的Node.js等效项,php,mysql,node.js,ejs,Php,Mysql,Node.js,Ejs,我实际上是从我的mysql数据库中获取数据,其中有带重音的文本,如 “èèèèèè…” 但是当我用node.js将它呈现到我的ejs文件时,它会显示给我 “h�“lo”代表“hélo” 。 问题是使用php和函数htmlspecialchars(str)的easyli解算器 节点中的此函数是否有等效项 谢谢首先,如果您正确设置了编码(在html页面和数据库中,或在插入前/选择后转换),则不需要将特殊字符转换为html实体以避免所述行为htmlspecialchars()应用于防止人们发布HTML

我实际上是从我的mysql数据库中获取数据,其中有带重音的文本,如

“èèèèèè…”

但是当我用node.js将它呈现到我的ejs文件时,它会显示给我

“h�“lo”代表“hélo”

。 问题是使用php和函数
htmlspecialchars(str)的easyli解算器
节点中的此函数是否有等效项


谢谢

首先,如果您正确设置了编码(在html页面和数据库中,或在插入前/选择后转换),则不需要将特殊字符转换为html实体以避免所述行为
htmlspecialchars()
应用于防止人们发布HTML(将
转换为

如果仍然需要转义HTML特殊字符,请查看此NPM包:

像这样使用它:

const Entities = require('html-entities').AllHtmlEntities;
const entities = new Entities();

console.log(entities.encode("éèàâê");
将输出

éèàâê

PHP的
htmlspecialchars
在这方面没有帮助。您需要
htmlentities
。(只有当问题发生在PHP和浏览器之间时,它才能解决问题;如果问题发生在PHP和MySQL之间,或者如果数据在一开始就以损坏的状态放入数据库,它就不会有任何帮助)。你真的应该通过规范字符编码(并在任何地方使用UTF-8)来解决这个问题。试试这个:
Buffer.from(str).toString('utf8')
。但我认为您的服务器端web应用程序不会返回utf-8编码头,使用
express
framework尝试调用:
res.charset='utf-8'
在调用
res.render()
之前,否则我怀疑在表列中使用
utf-8
编码存储的数据具有
latin1
编码该编码实际上很好(在我的html中为UTF8)和(数据库中为utf8bin_unicode_ci),我试图使用您发送给我的库,但它不起作用,你知道吗?如果你在数据库和HTML页面中看不到相同的字符,那么在数据库和HTML页面之间的某个地方,它被重新编码的方式就不同了。如果你提供更多关于代码的信息,你可能会得到一些帮助。至于
htmlspecialchars
,@Quentin是对的,您需要的是
htmllentities()
函数。检查编辑后的答案你的意思是我可以做:myTitle[i]=entities.encode(results[i].title),然后做res.render('mypage',{Titile:myTitle});它会正确地显示它吗?ps:我用utf8_unicode_ci重新编码了我所有的数据库,虽然速度很慢,但是读的是重音符号(mysql文档),我正要建议这样做!