丹麦字母MySQL输出

时间:2014-12-01 13:12:02

标签: php mysql database collation

我的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 
}

2 个答案:

答案 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)。 从

Differences Between Character Sets