С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
4 / 4 / 3
Регистрация: 06.09.2013
Сообщений: 89

Как вывести из БД текст в нужной кодировке ?

06.09.2013, 23:04. Показов 3440. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как вывести из БД в нормальной кодировке ?
в php прописал

mysql_query("SET NAMES utf8");

вот БД
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE IF NOT EXISTS `products` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  `description` text NOT NULL,
  `price` DECIMAL(8,3) NOT NULL,
  `image` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  `cat` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
 
 
INSERT INTO `products` (`id`, `title`, `description`, `price`, `image`, `cat`) VALUES
(1, 'Apple iPad mini 64 GB WiFi', 'Описание', 30.000, 'tablets/ipad_mini.jpg', 'tablets'),
(2, 'Sony LT29i Xperia TX, White', 'Описание', 23.000, 'phones/Xperia_TX.jpg', 'phones'),
(3, 'Nokia 920.1 Lumia Yellow', 'Будущее мобильных технологий уже наступило! Флагманский смартфон Nokia Lumia 920 на платформе Windows Phone 8 – лучшее тому доказательство. Технология PureView и объектив Carl Zeiss позволяют получать качественное видео даже при резких движениях камеры и при недостаточной освещенности – благодаря оптической стабилизации изображения. Яркий и быстрый сенсорный дисплей PureMotion HD обеспечивает отличную цветопередачу, обладает высокой чувствительностью и реагирует на прикосновение пальцев, даже если вы в перчатках. Для подзарядки Nokia достаточно положить телефон на беспроводное зарядное устройство.', 19.000, 'phones/lumia920.1.jpg', 'phones');
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2013, 23:04
Ответы с готовыми решениями:

Как вывести информацию в нужной кодировке
Здравствуйте дорогие Форумчане) у меня к вам вопрос) начал я изучать flat assembler начал с обычных сортировок хочу вывести массив а он у...

Прочитать текст из файла в текстовое поле в нужной кодировке
Всем привет! Есть файл (во вложение) Пытаюсь прочитать из него текст: TextBox1.Text =...

Как вывести текст в правильной кодировке
.386p data segment para public 'data' use16 message db 'Привет$' data ends stk segment para stack 'stk' use16 db 100h...

9
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
06.09.2013, 23:25
Цитата Сообщение от trostroman Посмотреть сообщение
как вывести из БД в нормальной кодировке ?
в php прописал

mysql_query("SET NAMES utf8");

вот БД
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE IF NOT EXISTS `products` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  `description` text NOT NULL,
  `price` DECIMAL(8,3) NOT NULL,
  `image` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  `cat` VARCHAR(100) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
 
 
INSERT INTO `products` (`id`, `title`, `description`, `price`, `image`, `cat`) VALUES
(1, 'Apple iPad mini 64 GB WiFi', 'Описание', 30.000, 'tablets/ipad_mini.jpg', 'tablets'),
(2, 'Sony LT29i Xperia TX, White', 'Описание', 23.000, 'phones/Xperia_TX.jpg', 'phones'),
(3, 'Nokia 920.1 Lumia Yellow', 'Будущее мобильных технологий уже наступило! Флагманский смартфон Nokia Lumia 920 на платформе Windows Phone 8 – лучшее тому доказательство. Технология PureView и объектив Carl Zeiss позволяют получать качественное видео даже при резких движениях камеры и при недостаточной освещенности – благодаря оптической стабилизации изображения. Яркий и быстрый сенсорный дисплей PureMotion HD обеспечивает отличную цветопередачу, обладает высокой чувствительностью и реагирует на прикосновение пальцев, даже если вы в перчатках. Для подзарядки Nokia достаточно положить телефон на беспроводное зарядное устройство.', 19.000, 'phones/lumia920.1.jpg', 'phones');
Кодировку базы на utf-8 попробуйте поменять
0
4 / 4 / 3
Регистрация: 06.09.2013
Сообщений: 89
06.09.2013, 23:51  [ТС]
так она и стоит
0
Заблокирован
07.09.2013, 05:57
У вас стоит не падает:

Цитата Сообщение от trostroman Посмотреть сообщение
DEFAULT CHARSET=cp1251
Добавлено через 9 минут
Впрочем это вообще значения не имеет. Субъектом кодировки является любое текстовое поле, а не таблица и не бд конечно.

Цитата Сообщение от trostroman Посмотреть сообщение
в php прописал
mysql_query("SET NAMES utf8");
Еще агенту надо послать правильные данные.
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
07.09.2013, 08:53
Впрочем это вообще значения не имеет. Субъектом кодировки является любое текстовое поле, а не таблица и не бд конечно.
И тем не менее держать поля в utf-8, а саму базу в cp1251 как то не по фен шую.
ТС, А куда выводить данные нужно? и как вы определили, что данные выводятся в "ненормальной" кодировке?
0
Заблокирован
07.09.2013, 20:32
Конечно, но это не всегда от вас зависит. Какая-то бд в 1251, у вас интерфейс весь в юникоде. Не будете же вы всю бд переделывать, которая может годами пухла. А вам туда надо и свою таблицу вставить и записи делать. Так и делается - все что туда идет в юникоде - конвертится в текущую. Все что оттуда идет в 1251 скажем - для вас превращается в юникод.

Дамп может показать, конечно, кукиш. Юникодовые данные в файле в кодировке 1251 поломаются. Значит дамп надо делать в юникоде.

Добавлено через 59 минут
==========

В статье про кодировки прицепленной шапкой как-то все расплывчато и местами неправильно. Не будучи специалистом в перекодировании символов я бы рискнул предложить добавить туда нижеследующее, поскольку там тема закрыта.

Про utf-8 можно прочитать на википедии.

Мероприятия необходимые для правильной работы сервера с кириллицей.

1. Создавайте и сохраняйте все исходники в кодировке UTF-8 without BOM.

BOM это http://en.wikipedia.org/wiki/Byte_order_mark юникодовый символ U+FEFF показывающий порядок байтов. Символы в юникоде бинарно могут состоять из более чем 1 байта, следовательно для задач обмена файлами важно знать где старший байт.

Конкретному приложению которому предназначен конкретный файл BOM не нужен, поскольку приложение и так знает какой должен быть порядок, а пользователь должен его обеспечить. Зачем тогда требовать без BOM, если приложению он не мешает?

Иногда мешает, иногда приводит к коллизиям. В частности скрипт php как вы знаете начинается со специального тэга, разделителя вида <?php Так вот в файле с символом BOM скрипт начнется не с тега <?php, или <?, но с символа U+FEF.. Который вроде никак себя не проявляет пока не возникнет потребность послать такой заголовок агенту (браузеру например), который должен уйти до любого вывода из буфера, например типичный редирект.

Внезапно вы получаете сообщение об ошибке смысл которой сводится к тому, что header already sent и sent, то есть уже отправлен - со строки номер 1. Которая у вас начинается с <?php. Это значит что BOM как текст до тега <?php уходит незаметно и уходя требует от сервера послать перед собой гонца - тот самый заголовок который already sent.

Второе почему BOM не нужен, даже если вы никаких заголовков и редиректов не планируете. U+FEFF оказывает медвежью услугу. Он информирует браузер о том что поток в юникоде, браузер кладет на автоматически посланный сервером заголовок и все работает пока вы не напоретесь на браузер типа Интернет Эксплорер номер 10 или агент типа того. Который игнорирует U+FEFF желая все-таки получить заголовок с правильной информацией о кодировке полученного текста.

2. Вместо BOM посылайте до любого вывода из буфера общеизвестный заголовок

PHP
1
header('Content-Type: text/html; charset=UTF-8');
3. Создавайте таблицы в бд с опциями по умолчанию:

SQL
1
2
3
CREATE DATABASE IF NOT EXISTS `example`
 DEFAULT CHARACTER SET utf8
 DEFAULT COLLATE utf8_general_ci;
4. После установления коннекта к бд задайте кодировку

PHP
1
$mysqli->set_charset("utf8");
Именно так делать важно и потому, что метод mysqli::real_escape_string() должен знать о выбранной кодировке, иначе от кириллицы может не остаться и следа после применения.

5. Для форм не гнушайтесь добавить атрибут

HTML5
1
accept-charset="UTF-8"'
6. Мета-теги в html вида

HTML5
1
<meta charset="UTF-8">
или древнего подлиннее - абсолютно никакого влияния не оказывают на отображение символов на странице которую сделал php скрипт на сервере.

Они - для файлов. Если html лежал на сервере как файл, сервер, теоретически, может взять такой тег и послать соответствующий заголовок агенту. Кроме того агент может сохранить полученный html как файл (например в кэше, или там для оффлайна) и тогда единственный законный способ узнать кодировку даст этот самый мета.

7. Файлы sql, css, js и прочие так же создавайте в UTF-8. Кроме того css маркируется признаком юникода отдельно:

HTML5
1
@charset "UTF-8";
8. Для работы с mysql в виндовой консоли следует переключить ее _до_ вызова mysql.exe из кодировки 866 в 1251 командой

Code
1
chcp 1251
Если что забыл - добавлю.
1
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
08.09.2013, 03:12
а .htaccess уже не в моде?
0
Заблокирован
08.09.2013, 11:06
Зачем .htaccess?
0
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
08.09.2013, 15:00
Цитата Сообщение от sqlnub Посмотреть сообщение
Зачем .htaccess?
http://htaccess.net.ru/doc/Add... efault.php
0
Заблокирован
08.09.2013, 23:55
Это понятно, а зачем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2013, 23:55
Помогаю со студенческими работами здесь

Как получить страницу по GET в нужной кодировке
Есть сайт в win-1251, с которым нужно плотно работать. Отправлять POST и GET запросы, сохранять текущие куки. Помогите: 1). Разобраться с...

Как записать данные в файл в нужной кодировке
В общем как не пытаюсь выгрузить данные в csv из List&lt;string&gt; мучаюсь с кодировкой. Через excel выходят крякозябры. Через notepad++...

Как сохранять через fwrite в нужной кодировке?
Как сохранять через fwrite в нужной кодировке?

Как с OpenFileDialog сохранять файлы в нужной кодировке?
Делаю так: saveFileDialog1.Filter = &quot;Текстовые файлы (*.txt)|*.txt&quot;; // Утсанавлеваем фильтры на .txt ...

Как отобразить строку из DBF файла в нужной кодировке?
есть дбф файл с данными в кодировке Windows1251 (это я так предполагаю что в 1251, потому что использую дбф навигатор и ставлю вид...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru