如何处理sql数据库中的ß、ö、ä、ü等?

Posted

技术标签:

【中文标题】如何处理sql数据库中的ß、ö、ä、ü等?【英文标题】:How to deal with ß, ö, ä, ü etc. in an sql database? 【发布时间】: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 中指定字符集(我相信元标记,已经有一段时间了)并且字符会显示出来。 【参考方案1】:

以上是关于如何处理sql数据库中的ß、ö、ä、ü等?的主要内容,如果未能解决你的问题,请参考以下文章

德语特殊字符 Ää、Öö、Üü、ß 在 LiveLink 或 opentext 中显示不正确

Flutter 创建 API 请求并接收带有 - 'Ä' 'Ö' 'Ü' 'ß' 的字符串

Javascript 正则表达式替换必须保留德语变异元音

从 PHP 字符串中删除控制字符

如何在列表中打印德语变音符号?

cv2 imwrite 和德语字母(“ä, ü, ö”)