Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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 MySQL存储常见的特殊字符,但不存储罕见的字符_Php_Mysql_Utf 8 - Fatal编程技术网

Php MySQL存储常见的特殊字符,但不存储罕见的字符

Php MySQL存储常见的特殊字符,但不存储罕见的字符,php,mysql,utf-8,Php,Mysql,Utf 8,当我尝试插入一些罕见的特殊字符时(∨ ∧ → ↔ ∴), 它们被存储为问号。但当我尝试插入一些更常见的特殊字符(©时,一切都很顺利 我已经将我能找到的每个变量、数据库、表和连接设置为UTF-8,但还没有运气。我缺少什么?提前谢谢 下面是一个简单的例子: <?php header('content-type:text/html; charset=utf-8;'); $connection = mysql_connect('localhost', 'root', ''); mysql_sel

当我尝试插入一些罕见的特殊字符时(∨ ∧ → ↔ ∴), 它们被存储为问号。但当我尝试插入一些更常见的特殊字符(©时,一切都很顺利

我已经将我能找到的每个变量、数据库、表和连接设置为UTF-8,但还没有运气。我缺少什么?提前谢谢

下面是一个简单的例子:

<?php
header('content-type:text/html; charset=utf-8;');

$connection = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $connection);
mysql_set_charset('utf8', $connection);
mysql_query('SET NAMES UTF8');

$special_character = '∴';

echo 'Encoding of the special character before insert: '.base64_encode($special_character).'<br />';

mysql_query('INSERT INTO table (column) VALUES ("'.$special_character.'")');

$query = mysql_query('SELECT column FROM table');
while ($ROW = mysql_fetch_assoc($query))
    {
    echo 'Encoding of the special character after retrieval: '.base64_encode($ROW['column']).'<br />';
    echo 'Output: '.$ROW['column'].'<br />';
    }

mysql_close($connection);
?>

我过去在eclipse java控制台中遇到过类似的问题。在我的例子中,数据库中的信息被正确存储。发生的事情是控制台不打算显示这些字符


为了查看它们,我让我的应用程序生成了一个包含特殊字符的文件,并在notepad++中打开它们,您可以使用该文件更改字符集以应用于该文件。我的俄语字符有此问题。

我过去在eclipse java控制台中也有类似问题。我的案例中的数据库信息存储在不正确。发生的事情是,控制台不打算显示这些字符


为了查看它们,我让我的应用程序生成一个包含特殊字符的文件,并在记事本++中打开它们,您可以使用它更改字符集以应用于该文件。我对俄语字符有此问题。

您在数据库中存储的内容必须包含在您使用的字符集表中 例如,对于UTF-8:

您在数据库中存储的内容必须包含在您使用的字符集表中 例如,对于UTF-8:

您错过了一个。您与mysql的连接也必须设置为UTF8。在最初连接到mysql之后,您的第一个“查询”应该是“设置名称UTF8”。如果您使用的是终端程序,请同时运行该“查询”。

您错过了一个。您与mysql的连接也必须设置为UTF8。在最初连接到mysql之后,您的第一个“查询”应该是“SET NAMES UTF8”。如果您使用的是终端程序,请同时运行该“查询”。

问题似乎出在我本地安装的MySQL中。我使用的是与Mac OSX 10.5捆绑在一起的过时版本。我下载并安装了较新版本的MySQL,并解决了问题


这就是为什么,孩子们,拥有最新版本的软件总是很好的原因。

问题似乎出在我本地安装的MySQL上。我使用的是一个过时的版本,它与我的Mac OSX 10.5捆绑在一起。我下载并安装了最新版本的MySQL,问题得到了解决


这就是为什么,孩子们,拥有你们使用的软件的最新版本总是好的。

它们是真的以问号的形式存储的,还是phpmyadmin/浏览器以这种方式显示它们?字体问题?你们用什么字体输出字符?你们是如何输入的?我试着通过PHP和终端输入,结果是ried也可以双向显示。仍然可以看到问号。字体是Helvetica,如果我将字符写为html实体,它们显示良好,因此可能不是字体问题。insert∴ 现在,您需要在插入数据库之前和检索之后向我们提供()输出。相同的脚本。我打赌这两种情况下都是相同的3字节字符,这意味着您需要发送正确的http头来告诉浏览器它的utf-8(不,meta html标记不会剪切它)。它们是否真的存储为问号,或者phpmyadmin/浏览器是否以这种方式显示它们?字体问题?您使用什么字体输出字符?您如何输入它们?我尝试通过PHP和终端输入,我也尝试以两种方式显示它们。仍然可以看到问号。字体为Helvetica,如果我写字符字符作为html实体,它们显示良好,因此可能不是字体问题。插入∴ 现在,您需要在插入数据库之前和检索之后向我们提供()输出。相同的脚本。我打赌这两种情况下都是相同的3字节字符,这意味着您需要发送正确的http头来告诉浏览器它的utf-8(不,meta html标记不会剪切它)。你应该提供一个例子或2,说明你的意思是UTF-8可以使用但不显示,等等。如果你想说我必须将表的字符集转换为UTF-8,我已经这样做了。你应该提供一个例子或2,说明你的意思是UTF-8可以使用但不显示,等等…如果你想说我必须转换字符集对于UTF-8中的表,我已经做过了。我只是尝试添加它,但没有任何区别(更新了示例)。此外,我在某处读到函数mysql\u set\u charset()与set NAMES的功能相同。我只是尝试添加它,但没有任何区别(更新了示例)。此外,我在某处读到函数mysql_set_charset()的作用与set NAMES的作用相同。