我的MySQL数据库中有一些包含丹麦字母(æ,ø,å)的varchar
个字段。使用 phpmyadmin 浏览数据库时,字母会正确显示,但是当我通过查询获取字段并尝试显示字段时,它们会被更改(“ø”变为“¸”)。我尝试将校对更改为latin1和utf-8(两个丹麦版本),但没有运气。我甚至无法弄清楚它是数据库还是我的代码是问题。有谁见过这个吗?
编辑:我正在添加代码以读取和显示数据库内容。该问题在“users_last_name”和“address_street”中得到确认,但可能存在(目前这些是唯一带有丹麦字母的字段)。
代码:
<?php
// Query to load information on projects
$main_query = $this->db->query('SELECT project_id, project_name, project_image_src, project_owner FROM ed_projects');
foreach ($main_query->result() as $row) {
// Get adress of the current project in the "foreach" loop
$project_id = $row->project_id;
$address_query = $this->db->query("SELECT * FROM ed_project_address WHERE project_id='$project_id'");
$address_row = $address_query->row();
// Get the name of the user who owns the current project
$user_id = $row->project_owner;
$user_query = $this->db->query("SELECT users_first_name, users_last_name FROM ed_users WHERE id='$user_id'");
$user_row = $user_query->row();
?>
<div class="projectAvatar">
<?php if ($row->project_image_src) {
echo "<img src=".$row->project_image_src.">";
} else {
echo "NoImg";
}
?>
</div>
<div class="projectInformation">
<?php echo $row->project_name; ?> <br />
<?php echo $address_row->address_street." ".$address_row->address_number; ?> <br />
<?php echo $user_row->users_first_name." ".$user_row->users_last_name; ?> <br />
</div>
<?php
}
答案 0 :(得分:4)
如果在phpMyAdmin中有效,但在您自己的网页上没有,那么网页的字符编码可能会出现问题。假设您使用的是HTML5文档类型,请尝试添加:
<meta charset="utf-8">
到您网站的<HEAD>
部分。
基本上,根据您的评论和代码,您似乎在数据库中使用UTF-8编码成功存储了丹麦语字符。 (表的排序规则设置不会影响该排序;排序规则确定排序顺序和比较,但不确定用于存储的实际字符集。)要使字符在网页上正确显示,您需要告诉浏览器您使用什么字符编码重新使用你的页面;添加<meta charset...>
标头可以做到这一点。 phpMyAdmin的网页几乎肯定会使用UTF-8作为他们的字符集,所以如果这样做,你应该改变你的页面以匹配它。
正如我所提到的,我觉得到目前为止,Joel Spolsky的The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)给出了关于这一切是如何运作的最好的完整解释,它会告诉你这些东西应该如何在其所有的血腥细节中完成。 / p>
答案 1 :(得分:-2)
尝试此ANSI(Windows-1252)。 从
读