powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ASCII в UTF-8 никак не переводится
8 сообщений из 8, страница 1 из 1
ASCII в UTF-8 никак не переводится
    #37896171
M-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все три способа приводят к тому, что в $enc содержится "ASCII", а в БД заносится текст в виде "????? ???".
Код: php
1.
2.
3.
4.
//$q = iconv( 'ASCII', 'UTF-8//IGNORE', $_GET['q']);
//$q = utf8_encode($_GET['q']);
$q = mb_convert_encoding($_GET['q'],'utf-8','auto');
$enc = mb_detect_encoding($q);
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896180
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Известно, в какой кодировке исходные данные?
Какая СУБД? Мож забыли установить кодировку соединения...
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896186
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, если ВСЕ данные, передающиеся в БД - в ASCII, то зачем вообще что-то конвертить руками?

Во-вторых, в БД заносится ??????, а НЕ заносить в БД пробовали? Т.е. вы вообще выяснили, проблема в чем заключается: не конвертирует php или портится при внесении в БД?
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896633
M-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleИзвестно, в какой кодировке исходные данные?
Нет. Предположительно ASCII.
Запрос делаю не через браузер, а через приложение для Android, которое называется Tasker.
Через браузер - проблем не возникает с добавлением данных.

vkleКакая СУБД? Мож забыли установить кодировку соединения...
MySQL. А как ее установить и где? Вроде бы все там в utf8_general_ci.

Edd.DragonВо-первых, если ВСЕ данные, передающиеся в БД - в ASCII, то зачем вообще что-то конвертить руками?
Потому что если этого не делать или делать так, как сейчас - то получаем ??? ??? в БД. О чем я и говорил.
Edd.DragonВо-вторых, в БД заносится ??????, а НЕ заносить в БД пробовали? Т.е. вы вообще выяснили, проблема в чем заключается: не конвертирует php или портится при внесении в БД?
А как я это попробую, если запрос делаю не через браузер, а через Tasker под Android?

Ну дайте тогда пожалуйста код, чтобы в файл записать/прочитать. Я потестирую таким образом без БД. Пожалуйста, если не сложно.
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896639
M-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос SHOW VARIABLES LIKE 'char%' выдал следующее
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

Нужно ли что-то поменять в настройках? Если да, то скажите пожалуйста какими запросами или как через phpMyAdmin.
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896643
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторcharacter_set_database latin1
Если при создании БД не было указано UTF8 (или win1251, по вкусу), то она в latin1. Несмотря на правильную кодировку таблиц, это может влиять. Лучше пересоздать все заново в правильной кодировке.

авторНу дайте тогда пожалуйста код, чтобы в файл записать/прочитать
Набираем в гугле php file и он уже подсказывает варианты.
Проще всего этой функцией:
http://php.net/manual/ru/function.file-put-contents.php


авторПотому что если этого не делать или делать так, как сейчас - то получаем ??? ??? в БД.
При подключении к БД первым делом следует выполнить (не обязательно, если по-дефолту все ок)
Код: sql
1.
SET NAMES cp1251



Движок теперь знает, что от вас получает данные в 1251. А таблица в UTF8? Ок, сам и сконвертирует.

И другая ситуация. Не указываете. По дефолту кодировка одна. Таблицы - в другой. Данные от вас - в третьей. Конвертируете - в четвертую. Ну это хуже не придумаешь, но смысл, думаю, понятен ))


авторНужно ли что-то поменять в настройках? Если да, то скажите пожалуйста какими запросами или как через phpMyAdmin.
Настройки менять не обязательно. Кодировку и базы, и таблиц при создании есть где выбрать в Админе. Главное - не забывать это делать. Ну и выполнять SET NAMES в php.

Вот создайте новую БД и табличку тестовую строго в UTF8. Кодировку конекшина в такую, в которой данные (выгрузив в файл - посмотрите).
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896649
M-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragonавторcharacter_set_database latin1
Если при создании БД не было указано UTF8 (или win1251, по вкусу), то она в latin1. Несмотря на правильную кодировку таблиц, это может влиять. Лучше пересоздать все заново в правильной кодировке.
После изменений в phpMyAdmin стало вот так. Пересоздавать теперь не надо?
авторcharacter_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

Edd.DragonавторНу дайте тогда пожалуйста код, чтобы в файл записать/прочитать
Набираем в гугле php file и он уже подсказывает варианты.
Проще всего этой функцией:
http://php.net/manual/ru/function.file-put-contents.php
Создал пустой файл на компе (Windows 7) и скопировал его по FTP. Потом запустил скрипт, который записывает в него. Потом скопировал файл с FTP и открыл. В файле "??????". Значит проблема не в БД наверное... Как дальше бороться за жизнь? :)
...
Рейтинг: 0 / 0
ASCII в UTF-8 никак не переводится
    #37896653
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПосле изменений в phpMyAdmin стало вот так. Пересоздавать теперь не надо?
Это новые БД будут теперь по дефолту создаваться в UTF8. А уже имеющаяся, если сейчас latin1, то такой и остается.

авторВ файле "??????".
Без перекодирования как есть сохранить и открыть в редакторе, в котором можно повыбирать разные кодировки.
Например, в Notepad++
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ASCII в UTF-8 никак не переводится
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]