私はmysqlのdatabseを持っており、それが文字セットのID latin1_swedish_ciだと一例として、一つの列が(£???Œ?????‡¤????| ???‡??)そのようにつくれ現在のデータを失うことなく、データベースのデータユニコードをlatin1からutf8に変換するにはどうすればよいですか?
これがありますテーブル
-- phpMyAdmin SQL Dump
-- version 4.0.10deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Mar 27, 2017 at 02:49 PM
-- Server version: 5.5.44-0ubuntu0.14.04.1
-- PHP Version: 5.5.9-1ubuntu4.21
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `a`
--
-- --------------------------------------------------------
--
-- Table structure for table `block`
--
CREATE TABLE IF NOT EXISTS `block` (
`catid` int(12) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`rtl` int(12) NOT NULL DEFAULT '1',
`ratteb` int(11) NOT NULL DEFAULT '0',
`comment` text NOT NULL,
`showcat` int(11) NOT NULL DEFAULT '0',
`nostyle` varchar(255) NOT NULL,
`tab` varchar(255) NOT NULL,
`additional_locs` varchar(500) DEFAULT NULL,
PRIMARY KEY (`catid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=285 ;
--
-- Dumping data for table `block`
--
INSERT INTO `block` (`catid`, `name`, `rtl`, `ratteb`, `comment`, `showcat`, `nostyle`, `tab`, `additional_locs`) VALUES
(198, '???â€،?†?آ£?‰ ?آ£?â€?????‰', 1, 18, '', 2, '', '', NULL),
(2, '?â€،???ث†???‹', 2, 1, '', 2, '', '', NULL),
(3, '?????â€،?? ?â€،???’?آ¦?â€،?â€ک ?â€،???آ£???آ¦?â€،?إ’???آ?آ¤', 1, 8, '', 2, '', '', NULL);
の例は、私は文字セットを変更する方法を知っているが、私が変更されたときには、現在のデータは変更されませんでしたuft8します。 古いデータを修正して修正することは可能ですか?
おかげ
UPDATE:
PHPの文字セットがされているWindows-1256
元のテキストがutf8からlatin1にどのように変換されたかによって異なります。バイト単位でテキストが保存されていれば、元のテキストを復元できます。ただし、元のテキストを復元することはできませんでした。 – Shadow