如何在sql数据库中处理ß,ö,ä,ü等?

时间:2015-11-10 18:03:46

标签: php mysql sql-server csv phpmyadmin

我有一个德语的.csv文件(所以有characters,ö,ü,ß),我把它上传到sql server; 如果我去phpmyadmin并查看表格,这些字母会正确显示为ä,ö,ü,ß; 然而,当我从桌子上拿到这样一个带有这样一个字母的条目时,它不再起作用了,这些字母只显示了一个问号; 上传和下载的脚本是标准的,所以我使用fopen打开csv,然后用值填充数据库; 从数据库中获取它也是标准的,即:

$sql = "SELECT * FROM table WHERE id=$id";
$query = mysqli_query($db, $sql);
while ($row = mysqli_fetch_assoc($query)) {
echo $row['name']);
}

我猜这是字符编码的问题,但我不知道如何解决它;有人有想法吗?

我已经尝试过使用:

$name[$i]= str_ireplace ( 'ß' , 'ß' , $name[$i] ); 

在将其上传到数据库(html中的ß代码)之前,但是,如果我上传并查看phpmyadmin,ß不会被覆盖并仍然在sql数据库中写成ß 如果我使用命令:

$name[$i]= str_ireplace ( 'a' , 'ß' , $name[$i] ); 

作为一个例子,它可以工作,所有的都被ß取代,并且在phpmyadmin中也会显示为ß; 但是使用ß它不起作用;有人有想法吗? :) 非常感谢你!! :)

我不知道如何包含:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在我的脚本中,所以我用:

echo'';

这是对的吗?但不幸的是,它没有奏效;但是我尝试了这个:

$test = utf8_encode ( $row['name'] );
echo $test;

它有效;但如果我得到其他专栏,我需要一直写:

 $test1 = utf8_encode ( $row['name1'] );
 $test2 = utf8_encode ( $row['name2'] );

等。是否有可能永久地设置它而不仅仅是为了一件事?

1 个答案:

答案 0 :(得分:0)

3个步骤:

  1. 你可以在阅读时打印csv,看看特殊字符吗?
  2. 你能直接从phpmyadmin手动插入一个特殊字符到数据库吗?
  3. 如果以上两个答案都是肯定的,我的赌注是$ conn-&gt; set_charset(&#34; utf8&#34;);如果您使用名为$ conn的连接对象。还必须在数据库连接上设置字符集
  4. 编辑:第二个虽然这可能不是它,但我留下它,因为它是数据库和特殊字符的常见错误,值得一试