Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Передаю в скрипт через POST-запрос данные для добавления в базу на base64. В скрипте декодирую, распарсиваю и добавляю в БД. $param_mas = explode("\r\n",$param); $file_name = $param_mas[0]; и потом если выполнять запрос: $query = "INSERT INTO files (f_first_letter, f_filename) VALUES('".strtoupper($file_name[0])."','".$file_name."')"; то запись не добавляется, а если перед выполнением запроса написать $file_name = 'µрёрµҐ ±іАы°ьё® Б¦°Е234.LNK'; то всё нормально работает - такая строка добавляется в базу Что интересно, если вызвать echo $file_name (в случае с $file_name = $param_mas[0];), то имя файла выводится такое - как я передал µрёрµҐ ±іАы°ьё® Б¦°Е234.LNK. Даже не знаю приблизительно в чем именно проблема - в php или в чем-то другом? Модератор: Random2 , не забываем про существование кнопок "SRC" и "Предварительный просмотр"! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 16:25 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Random2то запись не добавляетсяНу не просто же так она не добавляется. Откройте для себя mysql_error(), чтоли... Сама по себе строка кажется весьма странной, если только это не банальный бардак в кодировках. Да, функция mysql_real_escape_string() пропущена здесь случайно или она реально не использована? Random2если вызвать echoА echo не всю правду говорит. Вместо echo удобнее использовать var_dump(). Все же, оно более информативно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 21:02 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
МодераторRandom2, не забываем про существование кнопок "SRC" и "Предварительный просмотр"! Думал, что исходный код в 1-2 строки можно без SRC вставлять. На будущее учту. vkle , Прошу прощения что сразу не уточнил. Дело в том, что MySQL или PHP (незнаю кто виноват) думает почему-то что строка пустая. А поле f_filename в базе уникально, поэтому после вызова mysql_errno() получаю текст ошибки авторERROR 1062 - Duplicate entry '' for key 'f_filename' Имя файла в такой кодировке мне досталось от предыдущей базы, которую заполнял не я, но мне нужно ее использовать "как есть". Так что здесь не моя заслуга абракадабры, но тем не менее хотелось бы и такое имя файла обработать нормально, чтобы запись добавилась в базу. Попробовал функцию mysql_real_escape_string - результат не изменился. Думаю, тут дело все же в кодировке. Попробую подробней описать, что у меня есть, используя также var_dump. 1. В самом начале получаю и обрабатываю параметр. Код: php 1. 2. 3. Вижу, что первый параметр (имя файла) - здесь правильный, т.е. здесь всё ОК: array(14) { [0]=> string(24) "µрёрµҐ ±іАы°ьё® Б¦°Е.LNK" 2. Далее идет вот такой код Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Вывод в браузере такой: checking filename...: µрёрµҐ ±іАы°ьё® Б¦°Е.LNK inserting new file...: µрёрµҐ ±іАы°ьё® Б¦°Е.LNK SQL-ERROR: 1062 - Duplicate entry '' for key 'f_filename' То есть видно, что как только я передаю переменную file_name в запрос, то почему-то в запросе после этого переменная пустая. Но такая ситуация только, если я использую в 1м пункте код, который я указал выше. Если же написать явно, к примеру: Код: php 1. 2. То такой вариант отрабатывает нормально - в базу добавляется такая запись. Правда тут уже другой момент - strtoupper($file_name[0]) добавляет пустое значение, а должен быть символ µ. Но это уже следующий этап. Есть еще какие-нибудь соображения по этой проблеме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 11:48 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Random2Думал, что исходный код в 1-2 строки можно без SRC вставлять.Да можно и сто, но читать уж больно утомительно. Random2текст ошибки авторERROR 1062 - Duplicate entry '' for key 'f_filename'Вероятно, такая запись уже существует в базе. Или индекс как-то скозявило что он думает что запись существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 12:06 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Random2Правда тут уже другой момент - strtoupper($file_name[0]) добавляет пустое значение, а должен быть символ µ. Но это уже следующий этап.Эммм... А какие тип данных в таблице и какие кодировки выставлены в соединении и в поле? ИМХО: Вообще, для такой абракадабрицы лучше в таблицах использовать бинарный тип данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 12:09 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Хотя... еще фиг знает что там скрывается за $file_name[0] и какая кодировка преобразования используется для strtoupper. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 12:13 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
vkleВероятно, такая запись уже существует в базе. Или индекс как-то скозявило что он думает что запись существует. Смотрю в базе - такой записи нету, но есть пустая запись, а при добавлении в базу переменная $file_name почему-то пустая, отсюда и такая ошибка. vkleЭммм... А какие тип данных в таблице и какие кодировки выставлены в соединении и в поле? Character set: utf8 Collation: utf8_general_ci При соединении кодировку не указываю, соединяюсь так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 12:43 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Random2при добавлении в базу переменная $file_name почему-то пустая, отсюда и такая ошибка.А, ну знач проблема раньше чем переменная используется в запросе и пока нет смысла его рассматривать. Отслеживайте по шагам и найдете то место, где значение теряется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 13:29 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Исходя из кода ниже (в $file_name содержится нужная строка), получается, что проблема в функции mysql_query? Т.к. она в упор не видит то, что в $query занесена не пустая строка, а текст? Код: php 1. 2. 3. 4. 5. INSERT INTO files (f_first_letter, f_filename, f_text) VALUES('µ','µрёрµҐ ±іАы°ьё® Б¦°Е.LNK','') Duplicate entry '' for key 'f_filename' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:04 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Еще интересное наблюдение. Пишу теперь так: Код: php 1. 2. 3. 4. 5. 6. Теперь всё ОК - mysql_query отрабатывает без проблем. Интересно, в чем разница, если я напрямую присваиваю эту абракадабру переменной и если получаю ее вот так Код: php 1. Что получается. Вот так проблем нету: Код: php 1. А вот так есть: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:09 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
бардак. вот как получишь вот это в нормальном виде, так поймешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:11 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Все-таки тут какая-то проблема с кодировкой. Код: php 1. 2. 3. 4. 5. 6. 7. Длинна строки увеличивается вдвое и добавляются какие-то символы, когда я присваиваю напрямую. Что это значит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:13 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
ScareCrowбардак. вот как получишь вот это в нормальном виде, так поймешь. Согласен, выглядит не очень красиво. Но у меня только два варианта - либо пропускать эти строки с абракадаброй, либо научится их добавлять в базу вместе со всеми остальными нормальными. Пропустить я всегда успею, а все же попытаться найти причину - было бы неплохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:15 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
автора все же попытаться найти причину - было бы неплохо. кодировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:20 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Предположу что где то выполнилось одно или несколько преобразований из многобайтовой по факту кодировки, которую считали однобайтовой, в многобайтовую. Если так, то придется разбираться с кодировками на абсолютно всех этапах, включая веб-браузер. Random2Длинна строки увеличивается вдвое и добавляются какие-то символы, когда я присваиваю напрямую. Что это значит?Чудеса в наше время весьма редки. Предположу что при прямом присваивании используете многобайтовую, а смотрите в однобайтовой кодировке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2013, 15:31 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
vkle, ScareCrow, спасибо за помощь. Все решилось так, что на сервере всё нормально добавляется в базу (на локалхосте под денвером - нет, причину выяснить не удалось). С выводом тоже были проблемы - вместо юникодовых и спецсимволов были знаки вопроса. Решил эту проблему вызовом команды: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 12:30 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
Random2, Код: php 1. вот она голая правда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 12:48 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
SET NAMES ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 12:49 |
|
||
|
[PHP+MySQL] Проблемы с кодировкой или что-то другое?
|
|||
|---|---|---|---|
|
#18+
ScareCrow, Там же, где нашел это решение написано: авторЭта функция, кстати, заменяет все эти запросы: Код: php 1. 2. 3. 4. И работает значительно быстрее. Но появилась она только в PHP 5.2.3 и поддерживается MySQL сервером с версией >= 5.0.7. Если используете эту функцию, то подобные запросы можно не отправлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38285012&tid=1463743]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 416ms |

| 0 / 0 |
