Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90

База данных кодировка

23.09.2013, 21:22. Показов 2592. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема с базой данных. Есть андроид приложение. Я отправляю джсон потом записываю в базу

PHP
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
else if ($tag == 'register') {
        // Request type is Register new user
        $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $login = $_POST['login'];
        $phone = $_POST['phone'];
        $street = $_POST['street'];
        $house = $_POST['house'];
        $country = $_POST['country'];
        $town = $_POST['town'];
        $region = $_POST['region'];
        $pol=$_POST['pol'];
        $age=$_POST['age'];
        // check if user is already existed
        if ($db->isUserExisted($email)) {
            // user is already existed - error response
            $response["error"] = 2;
            $response["error_msg"] = "User already existed";
            echo json_encode($response);
        } else {
            // store user
            $user = $db->storeUser($name, $email, $password,$login,$phone,$street,$house,$country,$town,$region,$pol,$age);
            if ($user) {
                // user stored successfully
                $response["success"] = 1;
                $response["uid"] = $user["unique_id"];
                $response["user"]["name"] = $user["name"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            } else {
                // user failed to store
                $response["error"] = 1;
                $response["error_msg"] = "Error occured in Registartion";
                echo json_encode($response);
            }
        }
    }

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public function storeUser($name, $email, $password,$login,$phone,$street,$house,$country,$town,$region,$pol,$age) {
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; // encrypted password
        $salt = $hash["salt"]; // salt
        $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at,login,phone,street,house,country,town,oblast,pol,age) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW(),'$login','$phone','$street','$house','$country','$town','$region','$pol','$age')");
        // check for successful store
        if ($result) {
            // get user details 
            $uid = mysql_insert_id(); // last inserted id
            $result = mysql_query("SELECT * FROM users WHERE uid = $uid");
            // return user details
            return mysql_fetch_array($result);
        } else {
            return false;
        }
    }
если какое-то поле будет на русском, то в базе оно будет выглядеть "????"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2013, 21:22
Ответы с готовыми решениями:

База данных и кодировка
Есть файл базы данных DataBase.D, когда его открываю блокнотом, то все нормально, получаю такой текст : К S  Ѓ ...

База данных, основанная на службах vs База данных SQL Server
Доброго времени суток. Делал я, значит, Data Access Layer для ASP.NET MVC проекта. Создал обычную библиотеку классов, моделей туда...

Кодировка программы и кодировка базы данных
В общем в архиве стандартный пример и одна из программ по редактированию sqlite. Проблема заклчается в следующем: при редактировании...

38
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.09.2013, 00:20
Базы Данных. Кодировка ввода/вывода.
Приведите всё к UTF-8
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 01:07  [ТС]
сделал все в utf8. переконвертировал все таблицы в utf 8
ALTER TABLE `table` CONVERT TO CHARACTER SET 'utf8';

json отправляю тоже в utf8

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            Log.e("JSON", json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
вообщем все в utf8.

даже прописал SET NAMES в utf8. Даже принимает русский текст если я ввожу его в самом phpmyadmin. Но все-равно выдает мне ?????????
0
Заблокирован
24.09.2013, 06:51
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
то в базе
Что значит в базе? Вы как базу смотрите. Через свое приложение, через PMA, через консоль?
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 11:43  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Что значит в базе? Вы как базу смотрите. Через свое приложение, через PMA, через консоль?
через phpmyadmin смотрю базу.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.09.2013, 12:22
значит
MySQL
1
set names 'utf8'
не выполняете запрос после подключения к бд.
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 12:27  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
значит
MySQL
1
set names 'utf8'
не выполняете запрос после подключения к бд.
та я уже не знаю что менять. И так и сяк пробовал. менял в notepad++ все файлы апи на кодировку utf8, конвертировал таблицу в utf8(хотя она и так была в такой кодировке по умолчанию). хз что делать.

mysql_query("SET NAMES utf8");
вот так у меня после подключения db прописано
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.09.2013, 12:43
чудес не бывает) значит что то не сделали.
0
Заблокирован
24.09.2013, 19:37
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
// check if user is already existed
Юзер уже существовал. Чудес не бывает, да, смотреть через PMA на кодировку какой в этом смысл? PMA такое же веб-приложение как ваше, вам надо в своем оперировать кириллицей. Нет чистоты эксперимента.

В андроиде есть браузер? Наверно он понимает html. Значит должны быть отправлены правильные заголовки. При работе с аяксом, говорят, дополнительно требуется озаглавливать данные инфой о кодировке.

Проверить как записано в БД можно через консоль.

Добавлено через 5 минут
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
mysql_query("SET NAMES utf8");
Это видимо рунет и точка. Самое удивительное что вовсю юзают латиницу, даже пытаются писать по-английски, ну типа юзер уже существовал, а прочитать документацию в первоисточнике чего не хватает?

Как-то не вяжется приложение на андроид, какой-то чудесный класс db и считай мертвое API mysql. Капец всему походу в ру.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
      $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $login = $_POST['login'];
        $phone = $_POST['phone'];
        $street = $_POST['street'];
        $house = $_POST['house'];
        $country = $_POST['country'];
        $town = $_POST['town'];
        $region = $_POST['region'];
        $pol=$_POST['pol'];
        $age=$_POST['age'];
Вы не замечаете что имена переменных и элементов массива одинаковые? А все потому что уровень абстракции стремиться к нулю. Конечно мы не в рубрике php для начинающих, но ваш пост и мой ответ туда бы перенести.
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 19:42  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Как-то не вяжется приложение на андроид, какой-то чудесный класс db и считай мертвое API mysql. Капец всему походу в ру.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
      $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $login = $_POST['login'];
        $phone = $_POST['phone'];
        $street = $_POST['street'];
        $house = $_POST['house'];
        $country = $_POST['country'];
        $town = $_POST['town'];
        $region = $_POST['region'];
        $pol=$_POST['pol'];
        $age=$_POST['age'];
Вы не замечаете что имена переменных и элементов массива одинаковые? А все потому что уровень абстракции стремиться к нулю. Конечно мы не в рубрике php для начинающих, но ваш пост и мой ответ туда бы перенести.
нет времени уровень абстракции менять. php это для меня как инструмент. никогда его не изучал, но это не помешало мне переписать уже готовый код php под свои нужды. И когда кстати работает. Единственна проблема-русский язык. Можно создать классы, патерны, сделать уровень абстракции максимальным, но в данном случае я думаю это лишнее. Это не какой-то большой проект который потом придется сильно расширять и добавлять много нового функционала.
0
Заблокирован
24.09.2013, 19:54
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
мне переписать уже готовый код php
Не надо грязи. Сначала надо было найти такое гэ, а не другое, получше. И еще одной грязи не надо - насчет того, что никогда не случится в будущем. Как только вы наладите кириллицу и вообще все начнет работать, внезапно появятся хотелки, ну просто как из-под земли вырастут, чего-нибудь улучшить, расширить, раскрасить, поднять, запустить и смотреть как полетело. Это постоянно происходит на моих глазах как восход солнца. Клянутся и божатся что никогда в жизни, а через неделю уже начинается новая жизнь. Особенно под давление клиентов, покупанов, заказчиков и в таком роде.

В андроиде есть браузер? Посмотрите доступно ли переключение кодировок в нем и на какой он остановился.
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 20:22  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Не надо грязи. Сначала надо было найти такое гэ, а не другое, получше. И еще одной грязи не надо - насчет того, что никогда не случится в будущем. Как только вы наладите кириллицу и вообще все начнет работать, внезапно появятся хотелки, ну просто как из-под земли вырастут, чего-нибудь улучшить, расширить, раскрасить, поднять, запустить и смотреть как полетело. Это постоянно происходит на моих глазах как восход солнца. Клянутся и божатся что никогда в жизни, а через неделю уже начинается новая жизнь. Особенно под давление клиентов, покупанов, заказчиков и в таком роде.

В андроиде есть браузер? Посмотрите доступно ли переключение кодировок в нем и на какой он остановился.
при чем тут браузер в андроиде? он не имеет никакого отношения к проблеме.
0
Заблокирован
24.09.2013, 20:54
ну какая разница - тот агент который отправляет данные и получает данные.
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 21:09  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
ну какая разница - тот агент который отправляет данные и получает данные.
браузер не учавствует в этом. я отправляю через HTTP POST и получаю ответ и читаю его как utf8.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.09.2013, 21:19
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
читаю его как utf8
Что значит читаю как утф8? Как можно читать данные с клиента в какой либо кодировке? вы просто байты информации получаете

Если данные приходят в утф8 то пишите после конекта к бд
MySQL
1
set names utf8;
если в cp1251 то пишите
MySQL
1
set names cp1251;
Покажите результат запроса
MySQL
1
show create table `users`
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 21:52  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Что значит читаю как утф8? Как можно читать данные с клиента в какой либо кодировке? вы просто байты информации получаете

Если данные приходят в утф8 то пишите после конекта к бд
MySQL
1
set names utf8;
если в cp1251 то пишите
MySQL
1
set names cp1251;
Покажите результат запроса
MySQL
1
show create table `users`
вот результат запроса show.
set names utf8 я использую, как уже написал ранее. но толку нет.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE `users` (
 `uid` INT(11) NOT NULL AUTO_INCREMENT,
 `unique_id` VARCHAR(23) NOT NULL,
 `name` VARCHAR(50) NOT NULL,
 `email` VARCHAR(100) NOT NULL,
 `encrypted_password` VARCHAR(80) NOT NULL,
 `salt` VARCHAR(10) NOT NULL,
 `country` VARCHAR(20) NOT NULL,
 `region` VARCHAR(20) NOT NULL,
 `oblast` VARCHAR(20) NOT NULL,
 `town` VARCHAR(20) NOT NULL,
 `street` VARCHAR(40) NOT NULL,
 `house` VARCHAR(40) NOT NULL,
 `age` INT(10) NOT NULL,
 `pol` VARCHAR(1) NOT NULL,
 `coord1` INT(11) NOT NULL,
 `coord2` INT(11) NOT NULL,
 `phone` VARCHAR(13) NOT NULL,
 `created_at` datetime DEFAULT NULL,
 `updated_at` datetime DEFAULT NULL,
 PRIMARY KEY (`uid`),
 UNIQUE KEY `unique_id` (`unique_id`),
 UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.09.2013, 22:05
в каком формате сам php-скрипт?
P.S. не легче было изначально поменять в потоке UTF8 на Windows-1251
P.P.S. UTF-8 (без дефиса только в некоторых СУБД) и
PHP
1
mysql_set_charset('utf8');
вместо mysql_query и SET NAMES, если еще не поменяли
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.09.2013, 22:26
Цитата Сообщение от KOPOJI Посмотреть сообщение
в каком формате сам php-скрипт?
Что значит в каком формате?
Цитата Сообщение от KOPOJI Посмотреть сообщение
P.S. не легче было изначально поменять в потоке UTF8 на Windows-1251
а смысл? лучше делать всё в утф8 сразу, ибо жсон, хмл, аякс - не работают в большинстве случаев с цп1251.
Цитата Сообщение от KOPOJI Посмотреть сообщение
P.P.S. UTF-8 (без дефиса только в некоторых СУБД)
тут мускл, тут как раз без дефиса.
Цитата Сообщение от KOPOJI Посмотреть сообщение
вместо mysql_query и SET NAMES, если еще не поменяли
сколько раз юзал, ни разу не было проблем, даже в доке мускл написано что сет неймс вполне достаточно
имхо, то в доках мускл написана по отношение к мускл должно быть не менее значимо, чем то что в доках пхп написано по отношение к мускл

Добавлено через 2 минуты
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
set names utf8 я использую, как уже написал ранее. но толку нет.
ну так нет гарантии что в пма Вы правильно смотрите, вам уже писали что это тоже просто скрипт и тоже может быть не верная кодировка выставлена.
зайдите в консоль или проверьте в настройках пма кодировку.
как я пиал выше, чудес не бывает
либо вы не в той кодировке отдаёте данные, либо не в той кодировке коннект к бд, ну или же вы проверяете сохранённые данные не в той кодировке.
0
2 / 2 / 2
Регистрация: 13.02.2013
Сообщений: 90
24.09.2013, 22:29  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
ну так нет гарантии что в пма Вы правильно смотрите, вам уже писали что это тоже просто скрипт и тоже может быть не верная кодировка выставлена.
зайдите в консоль или проверьте в настройках пма кодировку.
как я пиал выше, чудес не бывает
либо вы не в той кодировке отдаёте данные, либо не в той кодировке коннект к бд, ну или же вы проверяете сохранённые данные не в той кодировке.
каким образом это проверять?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.09.2013, 22:35
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Что значит в каком формате?
имел в виду кодировку файла
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
а смысл?
смысла и правда мало, но меньше действий было бы. Проблема, скорее, в самой яве.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
тут мускл, тут как раз без дефиса.
Ну да.. Только тут ява, и кодировку такую не знает, думаю
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
Java
1
2
BufferedReader reader = new BufferedReader(new InputStreamReader(
* * * * * * * * * * is, "UTF8"), 8);
попробуйте использовать
Java
1
Charset.forName("UTF-8").encode(reader.readLine())
только учитывайте, что там ByteBuffer возвращается.. З.Ы. у меня поверхностные знания явы, вам, скорее, в соответствующий раздел
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
сколько раз юзал, ни разу не было проблем
У меня были, правда давно. Уж не знаю, скорее всего, виноваты были мои руки

Добавлено через 45 секунд
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
каким образом это проверять?
запустите скрипт по-обычному, через веб-сервер или через консоль и посмотрите результат..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.09.2013, 22:35
Помогаю со студенческими работами здесь

Оптовая база: База данных!
Для оптовой базы требуется разработать информационную систему, позво- ляющую обрабатывать данные о товарах на складе. Информация ...

База данных, которая не база данных
Доброго времени суток. С базой данных никогда не работал, а начать не могу, выглядит сложно для короткого времени срока. В общем суть...

Не открывается база данных Access , пишет неразпознаваемый формат базы данных
Не открывается база данных Access , пишет неразпознаваемый формат базы данных,что делать

Как подключиться к базе данных на Wpf. База данных Sql Server
Раньше работал с Windows Worms, и то не долго. Щас хочу перейти на WPF. Я в этом деле еще новичок. Не могли бы вы объяснить как...

База данных ветклиника, отображение выбранных данных в другой форме!
Здравствуйте, помогите пож-ста. Есть база данных, мне нужно организовать в главной форме Карта Животного поиск по фамилии. В главной форме...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru