【问题标题】:How to deal with ß, ö, ä, ü etc. in an sql database?如何处理sql数据库中的ß、ö、ä、ü等?
【发布时间】:2016-02-11 17:17:02
【问题描述】:

我有一个德语 .csv 文件(因此带有字符 ä、ö、ü、ß),我将其上传到 sql 服务器; 如果我去 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] ); 

作为一个例子,它可以工作,所有的 a 都被 ß 替换,并且在 phpmyadmin 中也将显示为 ß; 但是对于 ß 它不起作用;有人有什么想法吗? :) 非常感谢!! :)

我不知道如何包含:

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

在我的脚本中,所以我这样做了:

回声'';

正确吗?但不幸的是,它没有用;不过我试过了:

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

它奏效了;但是,如果我得到其他具有特殊字母的列,我需要一直写:

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

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

【问题讨论】:

  • 您可能没有在 HTML 中设置字符集,并且默认设置不包含这些字符。
  • 对于乔纳森的回应,我认为这就是你要找的 - php.net/manual/en/function.htmlentities.php
  • 是的,如果您想将字符转换为您请求的 HTML 实体,您可能会使用 htmlentties 和包含这些字符的字符集(假设 UTF-8)。我相信虽然这不是你真正需要的,因为它只是你认为最好的解决方案。真的,您应该能够在 html 中指定字符集(我相信元标记,已经有一段时间了)并且字符会显示出来。

标签: php mysql sql-server csv phpmyadmin


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 2015-04-30
  • 2013-04-16
  • 2015-03-30
  • 1970-01-01
  • 2011-06-29
相关资源
最近更新 更多