2009-06-27 3 views
1

я Тринг, чтобы добавить "翻 訳 す る テ キ ス ト や Web ペ ー ジ" в таблицу PostgreSQL, но его показано как это:Как вставить японский текст в таблицу Postgres с помощью PHP?

"& #32763;""& #35379;"す& #12427;テ& #12461;& #12473;& #12488;& #12420;Web& #12506;& #12540;& #12472; 

Как я могу вставить, что в нужном формате?

<?php 
$db = pg_connect("host=localhost port=5432 dbname=lang user=password=") or die(":("); 
pg_set_client_encoding($db , "UTF-8"); 
#pg_exec($db,"SET NAMES 'UTF-8'"); 
#pg_exec($db,"SET CLIENT_ENCODING TO 'UTF-8'"); 
//$lan=iconv("UTF-8",'ISO-8859-1//TRANSLIT',$_REQUEST['lan']); 
$lan=$_REQUEST['lan']; 
echo $lan; 
if(array_key_exists('sub',$_REQUEST)) 
{ 
$sql="INSERT INTO table1 (japan) VALUES('{$lan}')"; 
pg_query($sql) or die("errot"); 
} 
?> 

<html> 
<body> 
    <form action="" method=""> 
    <input type="text" name="lan" /> 
    <input type="submit" name="sub" /> 
    </form> 
</body> 
</html> 

ответ

1

то, что вам нужно будет работать до тех пор, как table1 имеет право сверки

см http://www.postgresql.org/docs/8.1/static/sql-createdatabase.html для установки кодировки (вся база данных)

см http://www.postgresql.org/docs/8.1/static/multibyte.html для поддержки символов доступны и как использовать их

редактировать
обратите внимание, что PHP обеспечивает pg_set_client_encoding(), чтобы изменить кодировку, однако, как и прямой запрос sql, который делает то же самое, он преобразует из кодировку бэкэнд в запрошенную клиентскую кодировку и не помогает со вставками. Для этого база данных/postreSQL должна иметь правильный набор кодировок (см. Первые две ссылки).

(примечание: MySQL ручки сортировки много лучше, так что если вы не слишком далеко, и требуется несколько параметров сортировки, то это может быть хорошей идеей, чтобы переключить)

+0

, который мне нужно использовать? – coderex

+0

- - дамп базы данных PostgreSQL - - Создана на 2009-06-27 17:22:32 SET client_encoding = 'utf8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = предупреждение; SET escape_string_warning = off; SET search_path = public, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; - - TOC entry 1466 (класс 1259 OID 71803) - Зависимости: 3 - Наименование: table1; Тип: ТАБЛИЦА; Схема: общедоступная; Владелец: prasanth; Табличное пространство: - CREATE TABLE table1 ( id integer NOT NULL, japan character (1000) ); – coderex

1

На мой взгляд, PG сохраняет значения правильно, поскольку 32763 равно шестнадцатеричному 7FFB равно 翻 (wiki)

Возможно, у вас есть проблема с отображением данных? Существует ли отдельный тип данных Unicode для строковых столбцов? Вы проверили с pgAdmin, каково фактическое содержимое вашей таблицы?

1

Похоже, что проблема не связана с базой данных вообще.

Просто ваш HTML не содержит объявления кодирования (на практике нет надежной кодировки по умолчанию для HTML, и вы получите мусор).

Добавить подходящую <meta> тег или отправить Content-Type header с параметром charset.


ОТВЕТ: У вас есть уязвимость в SQL-инъекции в коде. Не добавляйте переменные запроса в запросы. Используйте подготовленные заявления или, по крайней мере, всегда используйте pg_quote().

+0

да, конечно, этот код для просто для понимания только. как я новичок в PGSql.So это бит трудно понять.и знаю php mysql и моя основная форма формы та же. :) И я сделал метод кодирования HTML, и я просто хочу знать, есть ли какие-либо трудности, когда я использую функцию поиска БД. – coderex

Смежные вопросы