OK, actualmente estoy en PHP/MySQL/UTF-8/Unicode hell!UTF8 emite PHP -> MySQL. Obtener signos de interrogación en la base de datos?
Mi entorno: MySQL: 5.1.53 juego de caracteres del servidor: latin1 Db juego de caracteres: latin1 juego de caracteres Cliente:. Latin1 Conn juego de caracteres: latin1
PHP: 5.3.3
Mis archivos PHP se guardan como formato UTF-8, no como archivos ASCII.
En mi código PHP cuando hago la conexión de base de datos hago lo siguiente:
ini_set('default_charset', 'utf-8');
$my_db = mysql_connect(DEV_DB, DEV_USER, DEV_PASS);
mysql_select_db(MY_DB);
// I have tried both of the following utf8 connection functions
// mysql_query("SET NAMES 'utf8'", $my_db);
mysql_set_charset('utf8', $my_db);
// Detect if form value is not UTF-8
if (mb_detect_encoding($_POST['lang_desc']) == 'UTF-8') {
$lang_description = $_POST['lang_desc'];
} else {
$lang_description = utf8_encode($_POST['lang_desc']);
}
$language_sql = sprintf(
'INSERT INTO app_languages (language_id, app_id, description) VALUES (%d, %d, "%s")',
intval($lang_data['lang_id']),
intval($new_app_id),
mysql_real_escape_string($lang_description, $my_db)
);
El formato/crear de mi base de datos MySQL es:
CREAR TABLA SI NO EXISTE
app_languages
(language_id
int (10) unsigned NOT NULL,app_id
int (10) unsigned NOT NULL,description
tinytext collate utf8_unicode_ci, PRIMARY KEY (language_id
,app_id
) ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
Las sentencias SQL que se generan a partir de mi código PHP tener este aspecto:
INSERT INTO app_languages (language_id, app_id, description) VALUES (91, 2055, "阿拉伯体育新闻和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (26, 2055, "阿拉伯體育新聞和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (56, 2055, "בערבית ספורט חדשות ומידע")
INSERT INTO app_languages (language_id, app_id, description) VALUES (69, 2055, "アラビア語のスポーツニュースと情報")
Sin embargo, la salida aparece en mi base de datos como este:
| 69 | 2055 | ????????????????? |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |
¿Qué estoy haciendo mal ??
P.S. Podemos usar Putty para SSH directamente en el servidor de la base de datos y a través de la línea de comando Pegar una de las instrucciones de inserción unicode/multilingüe. ¿Y funcionan con éxito?
Gracias por cualquier luz que pueda arrojar sobre esto, me está volviendo loco.
Cheers, Jason
No, eso no es correcto porque verás en mis comentarios "PS Podemos usar Putty para SSH directamente en el servidor de la base de datos y a través de la línea de comando Pegar una de las instrucciones de inserción unicode/multilingüe. Y funcionan con éxito !? " – Jason
@Jason ¿Estás seguro de que Putty usa la codificación correcta? http://thegreyblog.blogspot.com/2009/08/configuring-putty-to-use-utf-8.html – bobo
@bobo, sí, así es exactamente como Putty está manejando la codificación, es UTF-8. – Jason