gpt4 book ai didi

php - PHP/MySQL 仅部分支持 Unicode 字符?

转载 作者:行者123 更新时间:2023-11-29 19:11:51 25 4
gpt4 key购买 nike

我编写了一个 PHP 脚本,它创建 5 个数据库并插入一些数据(使用 $mysqli->multi_query)。当我尝试时,unicode (ä ö ü ß •) 被破坏了,所以我对整个 sql 查询调用了 utf8_decode。但是,这仅适用于 ä ö ü,不适用于 ß •,也不适用于大写字母 Ä Ö Ü。这真的让我很困惑。

输出ß:�?Ÿ

我不是不同字符编码方面的专家,但到目前为止,我总是设法获得正确的输出。

我的所有文件均以 UTF-8 和元标记编码

<meta charset="utf-8">

每个网站都有。

有人可以帮我解决这个问题吗?

这是 SQL 查询的部分内容(非常非常长)

-- phpMyAdmin SQL Dump
-- version 4.6.5.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Erstellungszeit: 22. Mrz 2017 um 21:29
-- Server-Version: 10.1.21-MariaDB
-- PHP-Version: 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;


CREATE TABLE `forum` (
`id` int(10) UNSIGNED NOT NULL,
`autor` varchar(50) NOT NULL,
`text` varchar(2000) NOT NULL,
`datum` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;

<强>。 。 .

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

最佳答案

  1. 切勿永远使用 PHP utf8_decode()功能。它唯一能做的就是通过(糟糕地)将 UTF-8 数据转换为 ISO8859-1 来不可恢复地破坏 UTF-8 数据。将其从应用程序中出现的任何位置删除。

  2. 您的 table 有 DEFAULT CHARSET=latin1 。将其更改为 utf8mb4存储 Unicode 文本:

    ALTER TABLE `forum` CONVERT TO CHARACTER SET utf8mb4;

    如果且仅当您的 MySQL 安装太旧而无法支持 utf8mb4 ,使用utf8反而。 utf8字符集支持 Unicode 的有限子集(特别是,它不支持表情符号),但至少支持比 latin1 更广泛的字符选择。 .

关于php - PHP/MySQL 仅部分支持 Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com