Encoding &引用’&引用;在页面上显示而不是“显示”'&引用;
Encoding &引用’&引用;在页面上显示而不是“显示”'&引用;,encoding,utf-8,mojibake,Encoding,Utf 8,Mojibake,™显示在我的页面上,而不是” 我在我的标记和我的HTTP头中将内容类型设置为UTF-8: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 此外,我的浏览器设置为Unicode(UTF-8):
™代码>显示在我的页面上,而不是”
我在我的
标记和我的HTTP头中将内容类型设置为UTF-8
:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
此外,我的浏览器设置为Unicode(UTF-8)
:
那么问题出在哪里?我如何解决它?确保浏览器和编辑器使用UTF-8编码而不是ISO-8859-1/Windows-1252
或使用代码>如果您的内容类型已经是UTF8,则数据可能已经以错误的编码到达。如果从数据库获取数据,请确保数据库连接使用UTF-8
如果这是文件中的数据,请确保该文件正确编码为UTF-8。您通常可以在所选编辑器的“另存为…”对话框中进行设置
如果在源文件中查看数据时数据已经被破坏,那么很有可能它以前是UTF-8文件,但在此过程中以错误的编码保存
那么问题是什么呢
它是一个”
(-U+2019)字符,被解码为而不是。如果查看该表,则会看到该字符是UTF-8格式,由字节0xE2
、0x80
和0x99
组成。如果您选中,那么您将看到这些字节中的每一个都代表单个字符–、€和™代码>
我怎样才能修好它
使用UTF-8而不是CP-1252来读取、写入、存储和显示字符
在我的
标记和HTTP头中,我都将内容类型设置为UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
如果您的表已经是UTF-8,那么您需要后退一步。是谁或什么把数据放在那里的。这就是问题所在。一个例子是HTML表单提交的值被错误地编码/解码
以下是了解有关该问题的更多链接:
- ,来自我们自己的乔
- ,具有更简洁和实用的信息,解决方案针对Java环境
- ,针对PHP环境
您的字符编码不匹配;您的字符串以一种编码(UTF-8)进行编码,任何解释此页面的内容都使用另一种编码(比如ASCII)
始终在http头中指定编码,并确保这与框架的编码定义相匹配
示例http头:
Content-Type text/html; charset=utf-8
同样的事情也发生在我身上,'-'字符(长减号)。
我使用了这个简单的替换,所以解决它:
htmlText = htmlText.Replace('–', '-');
我有一些文档,..
显示为和ê
显示为Ã
。这就是它是如何到达那里的(python代码):
Adam使用windows-1252编辑原始文件
windows='\x85\xea'
#即水平省略号,带扬抑符的拉丁文小写字母E
#Beth将其正确读取为windows-1252,并将其写入utf-8
utf8=windows.解码(“windows-1252”).编码(“utf-8”)
打印(utf8)
#Charlie在windows-1252编写twingled utf-8版本时读错了
twingled=utf8。解码(“windows-1252”)。编码(“utf-8”)
打印(闪烁)
#通过读utf-8和写windows-1252(实际上是utf-8)来绕行
detwingled=twingled.解码(“utf-8”).编码(“windows-1252”)
断言utf8==detwingled
为了解决这个问题,我使用了如下python代码:
以open(“dirty.html”、“rb”)作为f的:
dt=f.read()
ct=dt.解码(“utf8”).编码(“windows-1252”)
以open(“clean.html”、“wb”)作为g:
g、 写入(ct)
(因为有人将twingled版本插入到正确的UTF-8文档中,所以我实际上只需要提取twingled部分,将其解缠绕,然后重新插入。为此,我使用了BeautifulSoup。)
与web服务器配置错误相比,您更有可能在内容创建方面遇到麻烦。您还可以通过为utf-8文档选择windows-1252编码来强制web浏览器闪烁页面。您的web浏览器无法删除Charlie保存的文档
注意:任何其他单字节代码页(如latin-1)而不是windows-1252都可能出现同样的问题。”
(Unicode代码点U+2019右单引号
)在UTF-8中编码为字节:
0xE2 0x80 0x99
™代码>(Unicode代码点U+00E2 U+20AC U+2122
)以UTF-8格式编码为字节:
0xC3 0xA2
0xE2 0x82 0xAC
0xE2 0x84 0xA2
这些是您的浏览器为了生成而实际接收的字节™代码>当作为UTF-8处理时
这意味着您的源数据在发送到浏览器之前要经过两次字符集转换:
源”
字符(U+2019
)首先编码为UTF-8字节:
0xE2 0x80 0x99
然后,这些单独的字节被一个Windows-125X字符集(1252、1254、1256和1258都映射到0xE2 0x80 0x99
到U+00E2 U+20AC U+2122
)错误地解释和解码为Unicode码点,然后这些码点被编码为UTF-8字节:
0xE2
->U+00E2
->0xC3 0xA2
0x80
->U+20AC
->0xE2 0x82 0xAC
0x99
->U+2122
->0xE2 0x84 0xA2
您需要找到执行步骤2中额外转换的位置并将其删除。您必须从Word文档中复制/粘贴文本。Word文档使用智能引号。您可以将其替换为特殊字符(&rsquo;),或者只需键入您的HT
define('DB_CHARSET', 'utf8mb4');
UPDATE MyTable SET
MyField1 = CONVERT(CAST(CONVERT(MyField1 USING latin1) AS BINARY) USING utf8),
MyField2 = CONVERT(CAST(CONVERT(MyField2 USING latin1) AS BINARY) USING utf8);
mb_convert_encoding('’', 'Windows-1252', 'UTF-8'); // returns ’
–
–