私はワードプレスのサイトを持っており、照合順序はutf8_unicode_ci
に設定されており、リトアニア語の文字は(Ą ą Č č etc.)
でした。これらの文字はすべて、次のように符号化されて保存されます。(Ä„ , Ä… , ÄŒ , Ä etc)
照合変更後に複数の外字を置換する
私はutf8mb4_unicode_ci
に照合順序を変更しました。新しいレコードはすべて保存され、正しく表示されます。ただし、古いレコードはすべて、データベース(Ä„ , Ä… , ÄŒ , Ä etc)
に表示されているとおりに表示されます。
現在の照合と一致させるために、複数の表の複数の文字を置き換えるにはどうすればよいですか?
ご迷惑をおかけして申し訳ございません。基本的にサイトがunsopportedサーバー上で稼働していたより多くの情報
と
EDIT。 phpMyAdminはデータベース・サーバ・セクションでは、私は次のような情報を見ることができます:
Server: Localhost via UNIX socket
Software: MySQL
Software version: 5.1.58-1~dotdeb.0-log - (Debian)
Protocol version: 10
User: [email protected]
Server charset: UTF-8 Unicode (utf8)
ここで(フィールドのほとんどはわかりやすくするために削除された)古いテーブルの作成テーブルです:
CREATE TABLE IF NOT EXISTS `wp_posts` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`post_content` longtext COLLATE utf8_unicode_ci NOT NULL,
`post_title` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ID`),
KEY `post_name` (`post_name`(191)),
KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
KEY `post_parent` (`post_parent`),
KEY `post_author` (`post_author`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
はこちらデシベルの輸出に生成さINSERT
の例:
INSERT INTO `wp_posts` (`ID`, `post_content`, `post_title`) VALUES
(1, 'Tomas TomĆ„ā€”nas', '');
は、だから私は、この新しいサーバーにインポートなどの、データベース全体を輸出していました。更新後、私はすべてのテーブルに対して、次のクエリを実行していた
Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 10.0.25-MariaDB - MariaDB Server
Protocol version: 10
User: [email protected]
Server charset: UTF-8 Unicode (utf8)
:ここでは、データベースサーバの情報がある
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
今、すべての新しいレコードがどのなく挿入し、所定の位置に、正しい文字で検索されましたしかし、すべての古いレコードは、Ć„ā€”
のような奇妙な文字で検索されます。
私が提供すべき他の重要な情報がある場合は、質問してください。
ありがとうございます。 SHOWと
EDIT SELECT HEX(POST_TITLE)と
CREATE TABLE `wp_posts` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`post_author` bigint(20) unsigned NOT NULL DEFAULT '0',
`post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_content` longtext COLLATE utf8_unicode_ci NOT NULL,
`post_title` text COLLATE utf8_unicode_ci NOT NULL,
`post_excerpt` text COLLATE utf8_unicode_ci NOT NULL,
`post_status` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'publish',
`comment_status` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'open',
`ping_status` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'open',
`post_password` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`post_name` varchar(200) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`to_ping` text COLLATE utf8_unicode_ci NOT NULL,
`pinged` text COLLATE utf8_unicode_ci NOT NULL,
`post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_content_filtered` longtext COLLATE utf8_unicode_ci NOT NULL,
`post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
`guid` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`menu_order` int(11) NOT NULL DEFAULT '0',
`post_type` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'post',
`post_mime_type` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`comment_count` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`),
KEY `post_name` (`post_name`(191)),
KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
KEY `post_parent` (`post_parent`),
KEY `post_author` (`post_author`)) ENGINE=MyISAM AUTO_INCREMENT=6394 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
EDIT
real title is "gegužės 9, 2016 @ 10:16 PM"
post_title = gegužės 9, 2016 @ 10:16 PM
HEX(post_title) = 4F7264657220266E646173683B2067656775C385C2BEC384E280947320392C203230313620402031303A313620504D
NO!テーブルの宣言とデータを修正しましょう。あなたが持っていたものと、この混乱に巻き込まれた措置を加えてください。 –
「古いレコード」と「新しいレコード」には、SELECT col、HEX(col)...を指定してください。それは私たちがそれを解明するのに役立ちます。 –
'SHOW CREATE TABLE'と接続パラメータを提供してください。 –