Almacenamiento y visualización de cadenas Unicode (्दी) usando PHP y MySQL
Tengo que almacenar texto en hindi en una base de datos MySQL, buscarlo usando un script PHP y mostrarlo en una página web. Hice lo siguiente:
Creé una base de datos y configuré su codificación en UTF-8 y también la intercalación enutf8_bin
. Agregué un campo varchar en la tabla y lo configuré para aceptar texto UTF-8 en la propiedad charset.
Entonces me puse a agregar datos a ella. Aquí tuve que copiar datos de unsitio existente. El texto en hindi se ve así: योदयर्योदय: 05: 30
Copié directamente este texto en mi base de datos y usé el código PHPecho(utf8_encode($string))
para visualizar los datos. Al hacerlo, el navegador me mostró "??????".
Cuando inserté el equivalente en UTF del texto yendo a "ver fuente" en el navegador, sin embargo, सूर्योदय se traduce enसूर्योदय
.
Si entro y almacenoसूर्योदय
En la base de datos, se convierte perfectamente.
Entonces, lo que quiero saber es cómo puedo almacenar directamente सूर् directly en mi base de datos y obtenerla y mostrarla en mi página web utilizando PHP.
Además, ¿alguien puede ayudarme a comprender si hay un script que, cuando escribo र्योदय, me daसूर्योदय
?
Solución encontrada
Escribí el siguiente script de muestra que funcionó para mí. Espero que también ayude a alguien más
<html>
<head>
<title>Hindi</title></head>
<body>
<?php
include("connection.php"); //simple connection setting
$result = mysql_query("SET NAMES utf8"); //the main trick
$cmd = "select * from hindi";
$result = mysql_query($cmd);
while ($myrow = mysql_fetch_row($result))
{
echo ($myrow[0]);
}
?>
</body>
</html>
El volcado de mi base de datos que almacena cadenas de uti hindi es
CREATE TABLE `hindi` (
`data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `hindi` VALUES ('सूर्योदय');
Ahora mi pregunta es, ¿cómo funcionó sin especificar "META" o información del encabezado?
¡Gracias!