Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 表单/电子邮件中复制/粘贴后出现的奇怪字符_Php_Mysql - Fatal编程技术网

Php 表单/电子邮件中复制/粘贴后出现的奇怪字符

Php 表单/电子邮件中复制/粘贴后出现的奇怪字符,php,mysql,Php,Mysql,我有一些用户,他们有时会在从Gmail复制内容后将内容粘贴到我网站的表单中。这些字符在粘贴时看起来很正常,但在数据库中会出现额外的特殊字符 下面是一个带有特殊字符的文本示例。 它最初发生在本页上: 但看起来制作它的人已经清理了这些奇怪的角色 有人知道如何阻止这种情况在未来发生吗 谢谢, 亚历克斯 我使用PHP和MySQL,我猜您得到的是UTF-8编码的文本,但您的数据库配置为ISO-8859-1(又名拉丁语-1)。你提到的页面上写着: <meta http-equiv="Content-

我有一些用户,他们有时会在从Gmail复制内容后将内容粘贴到我网站的表单中。这些字符在粘贴时看起来很正常,但在数据库中会出现额外的特殊字符

下面是一个带有特殊字符的文本示例。 它最初发生在本页上:

但看起来制作它的人已经清理了这些奇怪的角色

有人知道如何阻止这种情况在未来发生吗

谢谢, 亚历克斯


我使用PHP和MySQL,我猜您得到的是UTF-8编码的文本,但您的数据库配置为ISO-8859-1(又名拉丁语-1)。你提到的页面上写着:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

所以它声称被编码为UTF-8。UTF-8页面上的表单将以UTF-8格式发送回服务器。然后将UTF-8数据发送到数据库中,并以拉丁语-1编码文本的形式存储。如果您自己没有处理UTF-8到拉丁语-1的更改,那么当您将数据发送回浏览器时,您将得到“有趣”的字符。只要文本只使用标准ASCII字符,那么一切都将正常,因为UTF-8和拉丁语-1在ASCII字符上重叠

解决方案是选择一种字符编码并在任何地方使用它。我推荐UTF-8无处不在。但是,如果您的数据库已经是拉丁语-1,那么您必须使用拉丁语-1,或者更改数据库中的编码并重新编码所有数据。但是,如果数据库中的所有文本都是简单的ASCII,则不需要重新编码


如果没有示例,很难说会发生什么,但如果只有在将文本发送回浏览器时才会出现有趣(有趣的奇特,而不是有趣的哈哈)字符,则字符编码不匹配是常见的问题。

如果看不到实际字符,很难说任何事情……谢谢。两个问题:1)如何找出数据库使用的字符集?2) 如果我的数据库使用的是非UTF-8字符集,那么在非UTF字符集中编码我的HTML表单会有什么负面影响?执行
状态将告诉您服务器、客户端、数据库和连接字符集。如果你只针对美国和英国,在HTML中使用拉丁语-1是可以的,只要确保你的页面告诉浏览器它们是拉丁语-1;如果你必须处理除英语以外的任何事情,那么你应该前后使用UTF-8来保存你的理智。最重要的是,所有东西——发送的HTML、返回的表单和数据库——都使用相同的编码,越快越好。我检查了DM,它是拉丁文1,前端有UTF-8。那我该怎么处理我的数据库呢?我需要对每张桌子都做些什么吗?如果我将db更改为UTF-8,db中的拉丁语-1数据会发生什么变化?非常感谢。有些表可以声明为UTF-8,有些表可以声明为latin1吗?或者那只会造成一片混乱?:)