我设置了一个mysql数据库,字符集为utf8,Collection设置为utf8_general_ci。
我可以看到数据库中的俄文文本都很好。
我添加了<cfprocessingdirective pageEncoding="utf-8">
在coldfusion页面。如果我直接在cfm页面输入俄语文本,它在浏览器中显示正常。
但是,如果我使用cfquery来拉入数据以在浏览器中显示它,则显示不正确,即ÐŽÐ'Ð。
我的cfquery非常简单......
<cfquery name="getStatic" datasource="#session.odbcname#">
SELECT *
FROM static_id
WHERE static_displayname = 'home'
AND static_status = 'online'
</cfquery>
然后使用cfoutput显示数据#getStatic.data#
。
有关如何正确显示数据的任何想法?
由于
答案 0 :(得分:1)
将其添加到页面顶部。
<cfprocessingdirective pageencoding = "utf-8">
或者更好的是,如果您在每个页面上都需要它,请将其添加到onRequest()
的{{1}}事件中。
答案 1 :(得分:1)
ЎБ
是&#39; Mojibake&#39; ЎБ
在UTF-8中,十六进制为D08E D091
。如果将其视为latin1
,则十六进制D0 8E D0 91
表示ЎБ
。
但是,它也可能是&#34;双重编码&#34;,表中的十六进制是C390 C5BD C390 E28098
。请SELECT HEX(col) ...
看看你有哪些。
双重编码是一种无声错误 - 通常一切看起来都不错,而存储的值是错误的。
寻找&#39; Mojibake&#39;在here中列出要在代码中检查的内容列表。
(对于西里尔语,CHARACTER SET utf8
和utf8mb4
行为相同。它们主要区别于表情符号和中文。)
我对ColdFusion的吝啬说明
<cfprocessingdirective pageEncoding="utf-8">
<cffile
action="read"
file="#settings.csvfile#"
variable="autodata"
charset="utf-8">
(呃。我数了一下。我在45个第三方软件包上有笔记,比如ColdFusion。请原谅我,如果我不能在其中一个方面发表权威话。)