Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ASCII в UTF-8 никак не переводится

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: ASCII в UTF-8 никак не переводится
M-K
Отправлено: 27 Июля, 2012 - 22:21:01
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Все три способа приводят к тому, что в $enc содержится "ASCII", а в БД заносится текст в виде "????? ???".
PHP:
скопировать код в буфер обмена
  1. //$q = iconv( 'ASCII', 'UTF-8//IGNORE', $_GET['q']);
  2. //$q = utf8_encode($_GET['q']);
  3. $q = mb_convert_encoding($_GET['q'],'utf-8','auto');
  4. $enc = mb_detect_encoding($q);
 
 Top
KingStar
Отправлено: 27 Июля, 2012 - 22:32:00
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




а кодировка БД точно вюникоде???


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Bio man
Отправлено: 28 Июля, 2012 - 00:03:23
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Если символы не из таблицы ASCII (в ней всего 128 символов) то в юникод ты их никак не переведешь. и да, во всех кодировках, первые 128 символов и есть символы из священной таблицы ASCII.
 
 Top
LIME
Отправлено: 28 Июля, 2012 - 00:06:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)





M-K пишет:
ASCII в UTF-8 никак не переводится
ааа))) клево))
 
 Top
PATCH
Отправлено: 28 Июля, 2012 - 05:56:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)





и вариант текста который содержится в $_GET['q'];
 
 Top
LIME
Отправлено: 28 Июля, 2012 - 11:31:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PATCH не всегда работает
 
 Top
Bio man
Отправлено: 28 Июля, 2012 - 12:03:45
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




да не будет работать, из аски никто не переводит, потому что
Bio man пишет:
в ней всего 128 символов
и в каждой кодировке первые 128 символов ОДИНАКОВЫ, и переводить их не имеет никакого смысла. В ЛЮБОЙ кодировке эти первые 128 символов занимают 1 байт и ВЕЗДЕ будут отображаться одинаково.
 
 Top
M-K
Отправлено: 28 Июля, 2012 - 23:55:23
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




KingStar пишет:
а кодировка БД точно вюникоде???

В Операциях в Параметрах таблицы значится utf8_general_ci, в поле Сравнение для каждого поля таблицы - тоже utf8_general_ci.

Bio man пишет:
Если символы не из таблицы ASCII (в ней всего 128 символов) то в юникод ты их никак не переведешь. и да, во всех кодировках, первые 128 символов и есть символы из священной таблицы ASCII.

Спасибо за информацию. Но мне от этого не легче Улыбка Ведь это не я придумал, что данные у меня якобы в ASCII. Просто функция mb_detect_encoding так говорит. И что тогда делать-то?

PATCH пишет:
и вариант текста который содержится в $_GET['q'];

Как я и писал - ASCII. Я даже в БД эту инфу заношу для точности экспериментов... пишет ASCII даже после трех вариантов преобразования разными функциями (на выбор) - как в первом посте.

LIME пишет:
не всегда работает

Возможно как раз такой случай. А как тогда еще можно определить кодировку входящих данных?

P.S. Запрос делаю не через браузер, а через приложение для Android, которое называется Tasker.
Через браузер - проблем не возникает с добавлением данных.
(Добавление)
Запрос 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.
 
 Top
LIME
Отправлено: 29 Июля, 2012 - 00:10:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




M-K пишет:
Возможно как раз такой случай. А как тогда еще можно определить кодировку входящих данных?
http://forum.php.su/topic.php?fo...3&topic=2802
 
 Top
M-K
Отправлено: 29 Июля, 2012 - 01:51:31
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Создал пустой файл на компе (Windows 7) и скопировал его по FTP. Потом запустил скрипт, который записывает в него. Потом скопировал файл с FTP и открыл. В файле "??????". Значит проблема не в БД наверное... Как дальше бороться за жизнь? Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB