Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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_Email_Internationalization_Diacritics - Fatal编程技术网

Php 表格提交中的西班牙语重音符号

Php 表格提交中的西班牙语重音符号,php,email,internationalization,diacritics,Php,Email,Internationalization,Diacritics,我有一个可以提交西班牙语的表单,我用PHP发送一封包含数据的电子邮件。不幸的是,当他们收到电子邮件时,重音符号被完全弄糟了 如果我提交以下文件: 测试重音符号 á é í ó ú ñ 最后,我在邮件正文中写了以下内容 测试重音符号 处理电子邮件的代码只是将$\u POST信息直接放入电子邮件正文中。我想我需要htmlentities()或其他东西,但我已经尝试过了,但没有任何效果 我还需要将相同的数据放入MySQL数据库中,稍后再检索。当我这样做时,我需要知道什么 谢谢! Drew如果您使用ut

我有一个可以提交西班牙语的表单,我用PHP发送一封包含数据的电子邮件。不幸的是,当他们收到电子邮件时,重音符号被完全弄糟了

如果我提交以下文件:

测试重音符号 á é í ó ú ñ

最后,我在邮件正文中写了以下内容

测试重音符号

处理电子邮件的代码只是将$\u POST信息直接放入电子邮件正文中。我想我需要htmlentities()或其他东西,但我已经尝试过了,但没有任何效果

我还需要将相同的数据放入MySQL数据库中,稍后再检索。当我这样做时,我需要知道什么

谢谢!
Drew

如果您使用utf8主题,则需要首先对其进行base64编码:

$subject = "=?utf-8?b?".base64_encode($subject)."?=";
并将内容类型设置为:

$headers.="Content-Type: text/html; charset=utf-8\r\n";

我还建议您使用类似的系统来防止标头注入攻击。对于数据库部分,我认为最好将其作为一个单独的问题,以获得适当的标记和更集中的响应。

您已经触及了字符集的主题。尝试创建并将所有内容转换为utf-8。数据库、文件、表格等。在internet上查找有关电子邮件中要使用哪个标头以使其成为utf-8的一些信息。还可以使用这些标题将电子邮件从标准的7位转换为8位

"Content-Type: text/plain; charset=utf-8"
"Content-Transfer-Encoding: 8bit"

对于需要设置的数据库,如果是mysql,则为排序规则。

您的脚本正在接收UTF-8编码的数据,但您的电子邮件客户端认为该电子邮件是拉丁语-1编码的。有两种方法可以解决此问题:在电子邮件中添加一个标题,指示字符编码为UTF-8,或者在提交的内容上使用
utf8\u decode()
(如果您确定您将只使用拉丁字符)。

要回答有关在数据库中存储数据的问题,请执行以下操作:

使用MySQL_connect()打开到MySQL的连接后,将以下查询作为第一个命令发送:

mysql_query("SET NAMES utf8");
(或mysqli_query(),具体取决于您使用的库)

此命令让MySQL数据库知道:

  • 您将提供的所有数据都将 编码为UTF-8,以及
  • 您还希望接收UTF-8中的所有内容

严格地说,数据库本身可以采用任何排序和编码方式(MySQL很乐意随时为您转码),但当然,最好也采用UTF-8格式的数据库。

我没有答案,但您应该研究多字节字符串和PHPSeems的编码问题。。。确保表单和电子邮件的编码相同。你用什么发电子邮件?如果您使用MySQL,请确保存储这些文本的表也具有相同的编码。我认为这就是问题所在。我只是没有意识到我在电子邮件中把它设置成了错误的字符集。谢谢你的帮助!我的电子邮件工作得很好,现在正努力让数据库正常工作。我的排序规则设置为utf8\U unicode\U ci,但我仍然得到错误的字符。。。想法?你所有的桌子都换了吗?在phpMyAdmin中,您可以在表概述中看到排序规则(我记得)。您不仅需要设置排序规则,还需要在utf-8中设置php和mysql之间的连接,因此还需要使用set_names('utf-8')或类似的smth