Node.js等效于php中的htmlspecialchars

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


“éèà“...”</ p>
</ blockquote>

但当我使用node.js将其渲染到我的ejs文件时 它显示了我</ p>


“h�lo”代表“hélo”</ p>
</ blockquote>


问题是 使用php的easyli求解器和函数 htmlspecialchars(str); </ code>
在Node中有这个函数的等价物吗?</ p>

谢谢</ p>
< / DIV>

展开原文

原文

i'm actually getting data from my mysql database in which there is text with accents like

" é è à â ê... "

but when i render it to my ejs file with node.js it shows me

"h�lo" for "hélo"

. The problem is easyli solver with php and the function htmlspecialchars(str); is there any equivalent for this function in Node ?

Thank you

doumisha5081
doumisha5081 试试这个:Buffer.from(str).toString('utf8')。但我认为您的服务器端Web应用程序不会返回utf-8编码标头,快速框架尝试调用:res.charset='utf-8';在调用res.render()之前,我怀疑在具有latin1编码的表列中使用utf-8编码存储的数据
接近 2 年之前 回复
duanche8554
duanche8554 你真的应该通过规范你的角色编码来解决这个问题(并且到处使用UTF-8)。
接近 2 年之前 回复
dswe30290
dswe30290 PHP的htmlspecialchars不会有帮助。你需要很多好处。(如果问题出在PHP和浏览器之间,它只会解决问题,如果问题出在PHP和MySQL之间,或者数据首先被放入数据库中,则无法解决问题)。
接近 2 年之前 回复

1个回答

First of all, if you set your encoding correctly (on the html page and in the database or convert before inserting/after selecting) you shouldn't need to convert special chars to HTML entities to avoid the described behaviour. htmlspecialchars() should be used to prevent people from posting HTML (converting < and > to &lt; and &gt;).

If you still need to escape HTML special characters, take a look at this NPM package : https://www.npmjs.com/package/html-entities

Use it like this :

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

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

will output

&eacute;&egrave;&agrave;&acirc;&ecirc;
donglu9872
donglu9872 我正打算提出这个建议!
接近 2 年之前 回复
dtqysxw4659
dtqysxw4659 ps:我用utf8_unicode_ci对我的所有数据库进行了编码,这很慢但是读取了重音符号(mysql文档)
接近 2 年之前 回复
duanmiexi2275
duanmiexi2275 你的意思是我可以做:myTitle [i] = entities.encode(results [i] .title)然后做res.render('mypage',{Titile:myTitle}); 它会正确显示吗?
接近 2 年之前 回复
dtkwt62022
dtkwt62022 如果您在数据库和HTML页面中看不到相同的字符,那么在数据库和HTML页面之间的某个位置会以不同方式重新编码。 如果您提供有关代码的更多信息,那么您可能会获得一些帮助。 至于htmlspecialchars,@ Quentin是对的,你需要的是一个htmlentities()函数。 检查编辑的答案
接近 2 年之前 回复
duanmei4149
duanmei4149 编码实际上是好的(我的html上的UTF8)和(数据库中的utf8bin_unicode_ci)我试图使用你发给我的库,它没有用,任何想法?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐