You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中设置全局字符集为latin1_german1_ci解决德语变音显示问题

MariaDB全局latin1_german1_ci排序规则配置方案

一、全局配置修改方法

MariaDB不需要修改源码头文件重新编译,直接修改配置文件即可生效:

  • 首先找到对应系统的MariaDB配置文件:
    • Windows系统:默认路径为安装目录下的my.ini,一般是C:\Program Files\MariaDB 版本号\my.ini
    • Linux系统:通常为/etc/my.cnf或/etc/mysql/mariadb.conf.d/50-server.cnf
  • 在配置文件的[mysqld]段落中添加以下两行配置:
[mysqld]
character-set-server = latin1
collation-server = latin1_german1_ci
  • 保存配置文件后重启MariaDB服务生效,重启后可登录MariaDB执行命令SHOW VARIABLES LIKE 'collation_server';验证配置是否生效。

如果不需要全局生效,也可以单独为指定库设置排序规则,创建库时执行语句:

CREATE DATABASE mydatabase CHARACTER SET latin1 COLLATE latin1_german1_ci;

二、PHP代码乱码修复

phpMyAdmin显示正常、自定义PHP代码显示乱码的问题,是因为PHP与MariaDB建立连接时没有指定连接字符集,添加连接字符集设置即可解决,修正后的代码如下:

<body>
<?php
$db_link = mysqli_connect('localhost', 'user', 'mypassword');
mysqli_select_db($db_link, 'mydatabase');
// 新增:设置连接字符集为latin1,匹配数据库编码
mysqli_set_charset($db_link, 'latin1');
$db_query = 'SELECT * FROM myaddresses ORDER BY mylastname ASC';
$db_result = mysqli_query($db_link, $db_query);
$db_row = mysqli_fetch_array($db_result, MYSQLI_ASSOC);
echo $db_row['mylastname'];
mysqli_close($db_link);
?>
</body>
</html>

内容的提问来源于stack exchange,提问作者Seeky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:15:08