![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
Есть код формирующий запрос к серверному скрипту по методу GET. В запросе присутствует строка-сообщение содержащая русские буквы. Так как Ajax наотрез отказывается работать с русскими буквами то я пошарив по этому сайту поиском наткнулся на методы encodeURI и decodeURIElement
Так вот encodeURI всё преобразует нормально в UTF-8, но в базу данных вставляется нечто типа РџСЂРёРІРµС. Сам код формирующий запрос: function ClickButtonRequest() { CreateXMLHttpRequest(); var message_address = document.forms["private_form"].elements["address"].value; var message_text = document.forms["private_form"].elements["message"].value; var message_text_code = encodeURIComponent(message_text); var str = "message_in.php?private=y&address=" + message_address + "&message=" + message_text_code; str = encodeURI(str); XRH.open("GET", str); XRH.send(null); } Да, добавлю что английские буквы проходят нормально... Я в кодировках и текстовых форматах несилён, мож у меня мускул не так настроен, или в PHP нада что-то зделать, скажите кто-нибудь |
|||
|
||||
skyboy |
|
||||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
- это UTF-8. Но текущая кодировка базы - cp1251. Потому при вставке корёжится. Надо перед вставкой делать запрос на сервер:
Это вариант - 1. Вариант - 2 заключается в том, что у тебя записано нормально, но читается с приведением к кодировке cp1251. Чтоб читалось в UTF, надо перед чтением отправить запрос на сервер.
Вариант - 3 заключается в том, что так как ты не настривал работу с кодировками, оно и вставляет в базу и читает потом в кодировке ср1251, потому надо и перед операцией вставки, и перед операцией чтения(если они идут у тебя не одна за одной - в разных файлах или сессиях; если же они выполняются последовательно - хватит только одного раза - в самом начале) надо выполнить следующий запрос:
Вариант - 4. У тебя кодировка таблицы - ср1251. Потому надо поменять кодировку таблицы. "Как это сделать" - на этот вопрос можно ответить, если скажешь, каким front-end средством ты администрируешь базу. |
||||||||
|
|||||||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
skyboy, Круто...
![]() Скока подробностей... Базу админю MySQL Control Centеr- ом А вот как там кодировку в текстовых полях задавать понятия неимею.Иинтересно было бы узнать заодно как это делать не тока из контрола но из консоли. ![]() Это сообщение отредактировал(а) kaa - 16.8.2006, 09:29 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
бери хелп от MySQL Server и копай в сторону Alter table. В Create table тоже указывается кодовая страница. Так что - вперёд. зы MySQL Control Centеr - эта штука мне незнакома. Потому ничего не могу сказать, касательно её применения... |
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
skyboy, Понял, спасибо за направление,
Гавное знать где копать ![]() |
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
skyboy, Кодировка БД по умолчанию latin1
А вот на команду
ругается, в частности на параметр NAMES ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
как выглядит весь запрос? попробуй убрать ";" - это в консоли нужен разделитель...
|
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
Не, всёравно ругается - скрипт PHP просто в алерт вылетает, яв консоли попытался этот сет провести - ругается
![]() У меня мускул 4.0.18 - может от этого зависит? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
даже не знаю. а в help'e по этой теме(установка переменной окружения NAMES) смотрел?
|
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
skyboy, Смотрел - там про мою версию мускула нет ничего, как-то рплавно пе5реходят от 3х к 4.1.х А у мя 4.0.18
Нада народ в разделе БД - х потеребить, мож кто что знает... Спасибо за советы! |
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
В общем власть поменялась!
Протестировал я серверный скрипт напрямую и оказалось что всё в бд записывается нормально - UTF-8, тока страница на которую у меня возвращается результат с кодировкой windows-1251. Как сделать так чтобы получать текст в кодировке виндовой, и главное где? Можно как нить перекинуть из кода в код с помощью джавы-скрипта или PHP или в мускуле как-то ето сделать? |
|||
|
||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: 1 Всего: 2 |
И что? Никто-никто ненает?!
|
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
На JS можно, читать побайтово, приводить к коду вида %uHHHH, (H-hex), делать unescape(). Только покажи метод кодировки UTF-8.
|
|||
|
||||
chdan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Та же фигня. Страдаю ужасно - на полученные русские слова высвечивается js ошибка System error: -1072.... и так далее.
Как я понимаю, пхп серваку надо выдавать данные в UTF8? Если да, то как на него перейти? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
chdan, код, код давай...
|
|||
|
||||
chdan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Во время вызова метода this.http.open("GET", url, true); появляется ошибка, которую я писал. С английскими - все прокатывает шикарно. Это сообщение отредактировал(а) 12345c - 30.8.2006, 16:02 |
|||
|
||||
POLTER |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 25.8.2006 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
Здравствуйте!!! =)
У меня аналогичная проблема... С помощью Аякс-а я получаю данные с сервера, которые динамически сгенерированы скриптом. Принцип получения данных прост - создание XmlHTTPRequest, ПОСТ запрос скрипту, в скрипте генирируются данные, которые потом передаются клиенту через responseText. И проблема в том, что возвращает данные он в UTF-8, а нужно в windows-1251.... В чем трабла? Никаких баз данных не используется, просто создается ответ на основе параметров. Заранее спасибо! --------------------
Существует 10 типов людей: те, которые понимают твоичный код и те, которые его не понимают. |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: нет Всего: 30 |
У меня та же трабла и без БД, передаю скрипту данные он мне их же возвращает но в другой кодировке, незнаю UTF-8 или нет
![]() Выдаёт такое
-------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: нет Всего: 30 |
Побродил по разным форумам и нашёл такое решение
может можно его как-то упростить? ![]() Это сообщение отредактировал(а) Aliance - 11.12.2006, 00:07 -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: нет Всего: 30 |
Решил так, входящие данные обрабатывать в php-скрипте
Только по дефолту библиотека iconv закоментирована, её надо раскоментировать в php.ini -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
TNT86 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Если ты принимаешь данные с помощью PHP, просто перекодируй входные данные с помощью функции iconv из UTF-8 в Windows-1251 или KOI-8 в зависимости от того какая кодировка тебе нужна. По идее должно решить твои проблемы.
--------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Вот здесь приведено подобного плана решение чуть покороче и более гибкое (благодаря настраиваемой таблице перекодировки). Если, скажем, админ хостинга наотрез отказывается ставить iconv - можно воспользоваться таким подходом. Но перекодировать на сервере считается надежнее и правильнее. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: нет Всего: 30 |
TNT86, я уже выше сказал об этом
![]() SelenIT, спасибо за ссылку есди понадобится буду применять, мой хостер вроде по дефолту включил iconv. Я тоже так думаю ![]() -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
_lleopard_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 18.4.2007 Репутация: нет Всего: нет |
Я получаю в скрип заподировнную строку, либо utf-8 либо windows - 1251, как мне его раскодировать, что бы можно было допустим в Alert сообщение вывести или ещё куда...проблемма в том, что теряются русские буквы
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |