排序规则“latin1_swedish_ci”中的数据库回显会在网页上生成问号符号

时间:2016-04-10 23:10:45

标签: php mysql special-characters collation meta

我觉得这应该是一个简单的解决方案,但答案不包括在内。我试过谷歌搜索,在这里搜索......无济于事。

我的数据库中存有长文本。 整理是latin1_swedish_ci“ 当我在数据库中看到它时,它被正确存储。例如:

     string= Sally was walking one day and saw Tom.  Tom said "Hi, Sally!" Sally's response was "Hi, Tom."

每个“或”在黑色钻石上显示为白色问号。

我想

     $result=mysqli_query($db,"SELECT string FROM Table WHERE 1")
     while($row = mysqli_fetch_assoc($result)){
          echo $row['string']; 
     }

并显示所有角色。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您可以通过此示例修复您的问题。

SQL:

    CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `string` longtext,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

INSERT INTO `test` VALUES ('1', 'Sally was walking one day and saw Tom.  Tom said \"Hi, Sally!\" Sally\'s response was \"Hi, Tom.\"');

PHP:

$query = "SELECT id, string FROM test WHERE id = 1";

if ($result = mysqli_query($link, $query)) {

    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['string'];
    }

    mysqli_free_result($result);
}

mysqli_close($link);

答案 1 :(得分:0)

在做了一些研究之后,我找到了一篇之前没有发过的帖子。 Emil H提供了类似问题的解决方案:

  

MySQL即时执行字符集转换   称为连接字符集。您可以使用指定此charset   sql语句

     

SET NAMES utf8或使用特定的API函数,如   mysql_set_charset():

     

mysql_set_charset(“utf8”,$ conn);如果这样做是正确的,那就没有了   需要使用utf8_encode()和utf8_decode()等函数。

     

您还必须确保浏览器使用相同的编码。   这通常使用简单的标题来完成:

     

header('Content-type:text / html; charset = utf-8'); (注意   charset在浏览器中称为utf-8,在MySQL中称为utf8。)

     

在大多数情况下,连接字符集和网络字符集是唯一的   你需要跟踪的东西,所以如果它仍然不起作用   可能还有别的东西你做错了。尝试尝试   有点,通常需要一段时间才能完全理解。

     

shareedit编辑于2009年3月25日12:17回答于2009年3月25日11:52

      Emil H 28k75778

读完之后,我查看了他/她正在谈论的php代码,发现有一个sqli等效,语法不同。

(PHP 5> = 5.0.5,PHP 7) mysqli :: set_charset - mysqli_set_charset - 设置默认客户端字符集

描述¶

面向对象的风格

bool mysqli :: set_charset(string $ charset) 程序风格

bool mysqli_set_charset(mysqli $ link,string $ charset) 设置从数据库服务器发送数据到数据库服务器时使用的默认字符集。

我希望这可以帮助任何有问题的人。