我觉得这应该是一个简单的解决方案,但答案不包括在内。我试过谷歌搜索,在这里搜索......无济于事。
我的数据库中存有长文本。 整理是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'];
}
并显示所有角色。 有人可以帮忙吗?
答案 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提供了类似问题的解决方案:
读完之后,我查看了他/她正在谈论的php代码,发现有一个sqli等效,语法不同。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 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) 设置从数据库服务器发送数据到数据库服务器时使用的默认字符集。
我希望这可以帮助任何有问题的人。