Как убрать при обрезании строки (substr) знаки вопроса? [дубликат]
можете подсказать?! я не очень в php силен! mb_internal_encoding(‘UTF-8’); устанавливать перед if( strlen( $text ) > $Doska->Config[‘short_echo_max_strlen’] ) $text = substr( $text, 0, $Doska->Config[‘short_echo_max_strlen’] ).»..»;
22 авг 2015 в 15:12
Можно перед этим кодом отдельной строкой, если раньше вы не обрабатываете многобайтные строки. Можно и в самом начале скрипта.
22 авг 2015 в 15:18
увы вообще не отоброжает тогда страницу делаю так : if( $Doska->Config[‘short_echo_allowhtml’] != «yes» ) $text = strip_tags( $text, «
» ); mb_internal_encoding(‘UTF-8’); if( mb_strlen( $text > $Doska->Config[‘short_echo_max_strlen’] ) $text = mb_substr( $text, 0, $Doska->Config[‘short_echo_max_substr’] ).»..»;
22 авг 2015 в 15:23
Скобку забыли при закрытии mb_strlen. Отладку скриптов делайте с включенным отображением всех ошибок и предупреждений.
Почему знаки вопроса ��� в PHP?
При проверка файла через var_dump получаю знаки вопроса там, где идут русские буквы. Файл создавался через excel.
header("Content-Type: text/html; charset=windows-1251");
Текст получается нормальным, но при переобходе через foreach все равно получаю не понятный текст.
- Вопрос задан более трёх лет назад
- 3521 просмотр
Комментировать
Решения вопроса 1

php.net/manual/ru/function.iconv.php
У Вас, наверное, будет что-то подобное:
$str = iconv(‘utf-8’, ‘windows-1251’, $str);
или
$str = iconv(‘windows-1251′,’utf-8’, $str);
Знаки ? вместо русских букв
Проблема такая:вместо русских букв при открытии появляются знаки вопроса. У меня стоит Open Server. Читал тут на форуме про это, но там было в основном связано с различием кодировок в БД и php — файле. У меня пока нет БД. Я хочу просто увидеть русские буквы. Я пробовал вставлять такое:
header ("Content-Type: text/html; charset=utf-8");
Не помогает. Помогите пожалуйста
phpmyadmin выводит знаки вопроса вместо текста.
Теперь весь текст отображается в виде знаков вопроса(. ) в рнрмуадмин.
И на сайте выводится тоже в виде вопросов.
Хотя гостевуха работает нормально и если добавлять через нее текст то он нормально отображается на сайте, хотя в рнрмуадмин выводятся крякозяблики.
Почему не работает апдейт в рнрмуадмин? и как это исправить?
И еще, можно ли както вычислить хулиганов по email? если да, то как?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вместо русских букв знаки вопроса при создании XML
Добрый день! В бд все таблицы в кодировке utf-8. при создании xml-файла посредством php вместо.
Вместо русских символов знаки ? phpMyAdmin
Итак, вывожу русские символы из БД, и нифига, много что <?php $link =.
PHP выводит знаки вопросов вместо русских символов с таблицы mySQL
Доброго времени суток! Сколько гуглил, сколько разного перепрбывал, ничего не помогло.
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
какая кодировка базы данных?
какая кодировка гостевухи?
Регистрация: 10.09.2009
Сообщений: 261
Сообщение от Nazz 
какая кодировка базы данных?
какая кодировка гостевухи?
Базы данных не нашел как посмотреть, но таблица book, если зайти в структуру, и там в поле сравнение написано — cp1251_general_ci, Я так понимаю это кодировка, а ниже latin1_swedish_ci.
Вот:
book 3 MyISAM 3 cp1251_general_ci 1.2 КБ —
Таблиц: 1 MyISAM 3 latin1_swedish_ci 1.2 КБ 0 Байт
Потом зашел в структура таблицы там следующая картина:
name text latin1_swedish_ci Да NULL
mail text latin1_swedish_ci Да NULL
txt text latin1_swedish_ci Да NULL
В поле сравнение везде почумуто latin1_swedish_ci.
Я так понял нужно поменять эту кодировку? Если да то как?
Благотворец
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
Скорее всего обратно перекодировать уже не получится, а так приведи все поля в одну кодировку и в настройках PHPmyadmin и при подключении к БД на PHP ее используй.
Если не секретная информация, сделай дамп посмотрю может что получится
Регистрация: 10.09.2009
Сообщений: 261
В таблице еще пока ничего нет, и ее можно смело удалить. Но не хочется что бы такое повторилось в бущующем.
Как мне создать таблицу с определенной кодировкой?
Я делала так:
1 2 3 4
mysql_connect("localhost",$user,$password) or die("Не могу соединиться:".mysql_error()); mysql_query("CREATE DATABASE $db"); mysql_select_db("$db") or die("Не могу выбрать базу данных".mysql_error()); mysql_query("CREATE TABLE IF NOT EXISTS book(name TEXT,mail TEXT,txt TEXT)") Or Die("ошибка Создания Таблицы".mysql_error());
Что сюда нужно добавить чтобы была нужная кодировка? или нужно чтото еще менять?
Добавлено через 8 минут
Я понимаю что создать таблицу можно в рнрмуадмине, но хотелосьбы иметь универсальный код для создания таблицы, что бы его можно было использовать многократно, при этом меняя лишь значения в create table.
Так ведь можно сделать?
Благотворец
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
Создай дамп в phpmyadmin и открой его. Там будет и запрос создания таблицы
Регистрация: 10.09.2009
Сообщений: 261
Сообщение от arvitaly 
Создай дамп в phpmyadmin и открой его. Там будет и запрос создания таблицы
Удалил и создал заново таблицу.
Не работает, забавно, теперь работает апдейт, и выводит все нормально в муадмине, но гостевуха не работает, выводит вопросами довавляемвый текст, и тот текст который был апдейтен.
Вот код:
1 2 3 4 5
mysql_query("CREATE TABLE IF NOT EXISTS book( name text CHARACTER SET cp1251, mail text CHARACTER SET cp1251, txt text CHARACTER SET cp1251 ) ENGINE=MyISAM DEFAULT CHARSET=cp1251") Or Die("ошибка Создания Таблицы".mysql_error());
При дампе было CHARACTER SET latin1, Я поменял на cp1251.
Что мне делать что бы все нормально заработало?
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
1 2 3 4 5
CREATE TABLE IF NOT EXISTS `book`( `name` TEXT NOT NULL, `mail` TEXT NOT NULL, `txt` TEXT NOT NULL ) ENGINE=MyISAM CHARSET=cp1251 CHARACTER SET cp1251
Я думаю, что такой запрос будет правильней. Теперь по поводу «гостевухи». Перед первым запросом добавте:
mysql_set_charset('cp1251');
Регистрация: 10.09.2009
Сообщений: 261
Сообщение от romchiksoad 
1 2 3 4 5
CREATE TABLE IF NOT EXISTS `book`( `name` TEXT NOT NULL, `mail` TEXT NOT NULL, `txt` TEXT NOT NULL ) ENGINE=MyISAM CHARSET=cp1251 CHARACTER SET cp1251
Я думаю, что такой запрос будет правильней. Теперь по поводу «гостевухи». Перед первым запросом добавте:
mysql_set_charset('cp1251');
Спасибо большое, все работает, только ругается на кавычки `book` и SET cp1251, но если это убрать все работает просто замечательно.
разработчик
258 / 48 / 22
Регистрация: 24.07.2012
Сообщений: 219
Записей в блоге: 17
Очень познавательно, а если кодировка MySQL сервера utf-8
——
Версия программы: 5.5.20 — MySQL Community Server (GPL)
Версия протокола: 10
Пользователь: root@localhost
Кодировка сервера: UTF-8 Unicode (utf8)
——
Но при этом кодировка гостевой, базы данных, таблици и прочей шушеры мушеры — cp1251.
То как избежать знаков вопроса?
п.с.
это не вопрос на засыпку у меня возникла такая проблема. )
Почетный модератор
![]()
![]()
16843 / 6722 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
Сообщение от arvitaly 
Скорее всего обратно перекодировать уже не получится
Сообщение от pavlinmavlin 
у меня возникла такая проблема. )
почему это не получится? а iconv() для чего?
разработчик
258 / 48 / 22
Регистрация: 24.07.2012
Сообщений: 219
Записей в блоге: 17
Сообщение от KOPOJI 
почему это не получится? а iconv() для чего?
Это наверное помогло бы в случае к ракозябрами, но не со знаками вопроса. ))
Дело в том, что при занесении в бд все русские буквы преобразуются в знаки вопроса.
И как они стали знаками вопроса, так они ими и остаются при любой кодировке. Как в самой БД так и при выборке на страничку
разработчик
258 / 48 / 22
Регистрация: 24.07.2012
Сообщений: 219
Записей в блоге: 17
Думаю стоит пройти весь путь полностью. От и до.
И такс начнем.
1. Скачал MySQL сервер 5.5. Установил и настроил его при настройке конфигурации указал кодировку cp1251.
——
Сервер: localhost via TCP/IP
Программа: MySQL
Версия программы: 5.5.20 — MySQL Community Server (GPL)
Версия протокола: 10
Пользователь: root@localhost
Кодировка сервера: UTF-8 Unicode (utf8) — Но почему то все равно УТФ 8 стоит.
——
2. Скачал и установил phpmyadmin 3.5.2
3. Создал БД и таблици в ней при этом указав сравнение cp1251_general_ci
4. Создал сайт, блочный php. Тогда у меня возникла проблема с символами появляющимися в верхнем левом углу сайта «п=>» — что то вроде этого. Нашел в интернете решение проблемы. Перекодировал все страници сайта с помощью Notepad++ в UTF8 без (BOM). Проблема исчезла. Но при этом стали появляться кракозябры. Тогда поставил на главной страници кодировку windows-1251 и все встало на свои места. Далее все страници создавал так же, перекодировал их и т.д.
5. Создал гостевую. Код в файле обрабатывающем форму гостевой:
——
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
$podkl_server = mysql_connect("localhost","user","password"); $podlk_k_base = mysql_select_db("shkola",$podkl_server); if (isset($_POST['author'])) { $author = $_POST['author']; } if (isset($_POST['ma_adress'])) { $ma_adress = $_POST['ma_adress']; } if (isset($_POST['text'])) { $text = $_POST['text']; } $comments = mysql_query ("INSERT INTO guests (author,ma_adress,text) VALUES ('$author','$ma_adress','$text')"); if ($comments == 'true') {echo " ";} else {echo " ";}
——
В прицнипе все рабоатет как надо. Только вот вместо русских символов в БД заносятся знаки вопроса.
И так же выводятся при выборке из бд.