你好,我最近为我的网站更换了托管服务器。当我这样做的时候,我导出了我以前的cpanel phpmyadmin中的mysql数据库。它有CHARACTER SET latin1和COLLATE latin1_swedish_ci。当我将它导入到我的新phpmyadmin中后,我发现在显示捷克语的字符时出现了一个问题,这些字符看起来像问号或奇怪的符号等。我也没有注意到,我的网站已经被修改了。一开始我无法插入这些字母,但是在将表CHARSET更改为utf8之后,我就可以插入它们了。但是,我如何从旧数据库中导出数据,并将其导入到新数据库中,而不使数据混乱呢?下面是数据库的外观:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
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 */;
--
-- Database: `sambajiu_samba`
--
-- --------------------------------------------------------
CREATE TABLE `bookings` (
`id` int(11) NOT NULL,
`fname` varchar(100) NOT NULL,
`surname` varchar(100) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`telephone` varchar(100) NOT NULL,
`age_group` varchar(100) DEFAULT NULL,
`hear` varchar(100) DEFAULT NULL,
`experience` text,
`subscriber` tinyint(1) DEFAULT NULL,
`booking_date` varchar(255) DEFAULT NULL,
`lesson_time` varchar(255) NOT NULL,
`booked_on` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE `bookings` ADD PRIMARY KEY (`id`);
ALTER TABLE `bookings` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=345;
1条答案
按热度按时间bnlyeluc1#
捷克语不能用
latin1
来处理。最好使用utf8mb4
(它几乎可以处理世界上的任何东西)。在MySQL之外,它被称为“UTF-8”。你是怎么“导出”和“导入”的?文件里有什么?你能得到导出文件的一小部分的十六进制吗--我们需要检查捷克字符使用的是什么编码。
对于“作为问号或怪异符号”,请参见Trouble with UTF-8 characters; what I see is not what I stored中的问号和乱码。
你的咒语可能是想说
在十六进制的中间是
é
是UTF-8。当你显示数据时,你可能会看到它,或者你可能会看到你想要的é
。在后一种情况下,浏览器 * 可能 * 通过两次解码数据来“帮助”你。有关这方面的进一步讨论,请参见上面链接中的“双重编码”。“修复数据”相当混乱:
但是,我不认为我们已经完成了。acute-e是一个有效的字符在拉丁1。你提到的4个捷克重音字母,我认为,不是在拉丁1。拉丁5和dec 8 * 可能 * 相关。