Данные MySQL Convert latin1 к UTF8

Очистка обычно охватывает 3 шага:

  • первый Вы ДОБИРАЕТЕСЬ или POST Ваш запрос к указанному URL
  • затем, Вы получаете HTML, который возвращается как ответ
  • наконец, Вы анализируете из того HTML текст, который требуется очистить.

Для выполнения шагов 1 и 2, ниже простой php класс, который использует Завихрение, чтобы выбрать веб-страницы с помощью или ДОБРАТЬСЯ или POST. После возвращения HTML Вы просто используете Регулярные выражения для выполнения шага 3 путем парсинга текста, который требуется очистить.

Для регулярных выражений, мой любимый учебный сайт следующий: Учебное руководство

по Регулярным выражениям Моя Любимая программа для работы с RegExs Regex Buddy . Я советовал бы Вам пробовать демонстрацию того продукта, даже если у Вас нет намерения купить его. Это - неоценимый инструмент и даже генерирует код для Вашего regexs, который Вы делаете на своем предпочтительном языке (включая php).

Использование:



$curl = new Curl(); $html = $curl->get("http://www.google.com");

// now, do your regex work against $html

Класс PHP:



cookieJar = $cookieJarFile;
    }

    function setup()
    {


        $header = array();
        $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
        $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
        $header[] =  "Cache-Control: max-age=0";
        $header[] =  "Connection: keep-alive";
        $header[] = "Keep-Alive: 300";
        $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
        $header[] = "Accept-Language: en-us,en;q=0.5";
        $header[] = "Pragma: "; // browsers keep this blank.


        curl_setopt($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7');
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, $header);
        curl_setopt($this->curl,CURLOPT_COOKIEJAR, $this->cookieJar); 
        curl_setopt($this->curl,CURLOPT_COOKIEFILE, $this->cookieJar);
        curl_setopt($this->curl,CURLOPT_AUTOREFERER, true);
        curl_setopt($this->curl,CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($this->curl,CURLOPT_RETURNTRANSFER, true);  
    }


    function get($url)
    { 
        $this->curl = curl_init($url);
        $this->setup();

        return $this->request();
    }

    function getAll($reg,$str)
    {
        preg_match_all($reg,$str,$matches);
        return $matches[1];
    }

    function postForm($url, $fields, $referer='')
    {
        $this->curl = curl_init($url);
        $this->setup();
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_POST, 1);
        curl_setopt($this->curl, CURLOPT_REFERER, $referer);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $fields);
        return $this->request();
    }

    function getInfo($info)
    {
        $info = ($info == 'lasturl') ? curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL) : curl_getinfo($this->curl, $info);
        return $info;
    }

    function request()
    {
        return curl_exec($this->curl);
    }
}

?>

8
задан OMG Ponies 27 December 2009 в 03:16
поделиться

4 ответа

LOAD DATA INFILE позволяет вам установить файл кодировки, который должен находиться в:

http://dev.mysql.com/doc/refman/5.1/en/load-data .html

2
ответ дан 5 December 2019 в 06:54
поделиться

Преобразование latin1 в UTF8 - это не то, что вы хотите, вам нужно как-то наоборот.

Если на самом деле произошло следующее:

  1. Строки UTF-8 были интерпретированы как Latin -1 и перекодирован в UTF-8, искажая их.
  2. Теперь вы читаете или можете читать строки UTF-8 без дальнейшей интерпретации

Что вы должны сделать сейчас:

  1. Прочтите "UTF- 8 дюймов без перекодировки.
  2. Преобразовать в Latin-1. Теперь у вас должен быть исходный UTF-8.
  3. Теперь поместите его в столбец «UTF-8» без дальнейшего преобразования.
1
ответ дан 5 December 2019 в 06:54
поделиться

У меня были случаи, подобные этому, в старых установках WordPress, проблема заключалась в том, что сами данные уже были в UTF-8 в базе данных Latin1 (из-за кодировки WP по умолчанию). Это означает, что реальной необходимости в преобразовании данных не было, кроме форматов ddbb и table. По моему опыту, при выполнении дампа происходит путаница, поскольку я понимаю, что MySQL будет использовать набор символов по умолчанию клиента, который во многих случаях теперь UTF-8. Поэтому очень важно убедиться, что экспорт данных с одинаковой кодировкой. В случае Latin1 DDBB с кодировкой UTF-8:

$ mysqldump –default-character-set=latin1 –databases wordpress > m.sql

Затем замените ссылки Latin1 в экспортированном дампе перед повторным импортом в новую базу данных в UTF-8. Типа:

$ replace "CHARSET=latin1" "CHARSET=utf8" \
    "SET NAMES latin1" "SET NAMES utf8" < m.sql > m2.sql

В моем случае эта ссылка очень помогла. Прокомментировал здесь на испанском .

11
ответ дан 5 December 2019 в 06:54
поделиться

Я написал, что http://code.google.com/p/mysqlutf8convertor/ для базы данных на латинице в базу данных UTF-8. Все таблицы и поля для изменения UTF-8.

.
2
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: