Задавайте вопросы, мы ответим
Вы не зашли.
у меня есть база товаров с описание на иврите и скипт добавления продукта на РНР.
Сейчас при добавлении нового товара его описание кодируется в АНСИ и получается типа - "ורמו" хотя у таблицы поставлено сравнение на иврит и при добавлении стоит "SET NAMES hebrew". как мне сделать, что бы иврит показывался как есть и перекодировать, то, что уже добавлено?
Неактивен
MySQL не кодирует данные такими последовательностями, это делает какая-то из Ваших клиентских
программ (скрипт на php или что-то еще?).
Задач у Вас две:
1. Сделать так, чтобы в таблицу влезали символы. Для этого нужно убедиться, что таблицы (все) в
соответствующей кодировке. Преобразовать таблицу в кодировку hebrew можно командой
ALTER TABLE tablename CONVERT TO CHARSET hebrew.
Возможно также стоит задуматься о том, чтобы хранить данные в utf8 — тогда можно будет хранить
слова и из других языков.
2. Перекодировать строки вида ורמ. Эта задача немного сложнее, т.к. одним
MySQL тут не обойдешься. По хорошему надо пройтись по всем табличкам скриптом (может быть, на
том же PHP) и сделать соответствующие замены.
Как вариант — если можете остановить базу на некоторое время — можно сделать полный бэкап
так, чтобы получился текстовый файл, потом пройтись по нему скриптом и загрузить уже измененные
данные обратно в MySQL.
P.S. Если получится сейчас сходу написать скрипт какой-нибудь простенький, то выложу
Неактивен
aquatica:~/PERL$ cat decode.pl #! /usr/bin/perl use strict; use utf8; use HTML::Entities; use Encode; while (my $a = decode('UTF-8', <>)) { chomp ($a); decode_entities($a); print (encode('UTF-8', $a) . "\n"); } aquatica:~/PERL$ echo "ורמו" | perl decode.pl ורמו
Выглядит как иврит. Осмысленно ли это — не знаю
Запускать можно и как «perl decode.pl filename.sql > converted.sql» — над бэкапом базы.
Неактивен
спасибо. мне уже подсказали путь полегче - использовать функцию РНР html_entity_decode при выводе из БД, она преобразовывает Юникод в буквы.
Неактивен
Хранить в базе по 6 байт на символ — это круто Подумайте еще раз перед тем, как делать
полегче. Возможно, сделать правильно — лучше. Хоть и сложнее.
Неактивен