Foros del Web » Programando para Internet » PHP »

Problemas de cotejamiento en mysql

Estas en el tema de Problemas de cotejamiento en mysql en el foro de PHP en Foros del Web. Hola a todos: estoy creando una tabla donde recojo el anchortext de los enlaces de unas determinadas paginas y me encuentro con un problema que ...
  #1 (permalink)  
Antiguo 18/12/2011, 09:50
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 132
Antigüedad: 16 años, 6 meses
Puntos: 1
Problemas de cotejamiento en mysql

Hola a todos: estoy creando una tabla donde recojo el anchortext de los enlaces de unas determinadas paginas y me encuentro con un problema que no se como resolver y para el que solicito vuestra ayuda.

Si el enlace es de una página de EEUU no hay problema, pongo el UTF8 en la tabla y en el campo de la tabla y listo, funciona perfectamente. El problema es que además de las páginas en inglés tengo páginas en otros idiomas como son el francés, el castellano y, más complicado aún, páginas en catalán (que emplean la comilla simple (') o el ruso, o el ebreo). En pocas palabras, necesito que el cotejamiento del campo y la tabla me admitan cualquier caracter que sea posible incluir en los signos escritos de cualquier idioma.

Es posble que no me haya expresado de forma muy exacta o que esté mezclando conceptos, si es así ruego me disculpeis pero mis conocimientos son limitados en este campo.

Por favor, si alguien conoce cómo resolver el problema os rogaría me indiqueis la forma de arreglarlo. Espero vuestra respuesta.
  #2 (permalink)  
Antiguo 18/12/2011, 10:46
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 13 años
Puntos: 23
Respuesta: Problemas de cotejamiento en mysql

Es que no especificas bien el problema (parece que es codificación)

PHP ofrece una extensión llamada iconv que ayuda a convertir las diferentes codificaciones en la que necesites

Lo mejor es que escojas UTF-8 como tu punto de partida y conviertes todo a esa codificación
  #3 (permalink)  
Antiguo 18/12/2011, 11:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 26
Antigüedad: 13 años
Puntos: 4
Respuesta: Problemas de cotejamiento en mysql

Amigo los campos solo pueden tener un solo tipo de cotejamiento, es decir tienes que tener un campo para cada tipod e lenguaje, no puedes guardar todo en el mismo campo, xq yo te podria decir como cambiar el cotejamiento con MySQL directamente desde PHP pero si haces eso va a suceder esto:

- Digamos que ahorita esta en japones el campo y un catalan ingresa sus datos y el cotejamiento cambia a catalan, cuando el japones saque información de lo que se haya guardado en la BD mostrará simbolos extraños, o lo otro automaticamente la BD te dirá que no puede hacer ese cambio puesto que ya hay un o varios datos insertados que NO concuerdan con ese nuevo cotejamiento al cual quieres actualizar el campo, por eso si tienes varios cotejamientos, tienes que usar varios campos, eso si puede ser la misma tabla y la misma BD en ello si no hay problema.
  #4 (permalink)  
Antiguo 18/12/2011, 11:32
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 13 años
Puntos: 23
Respuesta: Problemas de cotejamiento en mysql

Estimado JesusCova:

Con Unicode UTF-8 se eliminan esos problemas que dices sobre el cambio de idioma (UTF-8 muestra casi todos los caracteres usados para escribir en el mundo (más del 90% y por los caracteres asiáticos no te preocupes, los muestra todos)
  #5 (permalink)  
Antiguo 26/06/2012, 10:27
 
Fecha de Ingreso: junio-2012
Ubicación: BCN
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problemas de cotejamiento en mysql

Hola a td@s,

Puedes probar lo siguiente:

1º -> Creas una clase propia de métodos estáticos

Ejemplo:

Código PHP:
final class Auxiliar{


Dentro de esta clase, creas dos métodos estáticos:

Código PHP:
private static function SetUtf8($string){
     return 
htmlentities($stringENT_QUOTES"UTF-8");
}

public static function 
GetUtf8($string){
     return 
self::SetUtf8($string);

Quedándote algo parecido a....

Código PHP:
final class Auxiliar{
   private static function 
SetUtf8($string){
        return 
htmlentities($stringENT_QUOTES"UTF-8");
   }

   public static function 
GetUtf8($string){
        return 
self::SetUtf8($string);
   }

Esto te servirá para parsear cualquier cadena de texto, independientemente de que cotejamiento MySQL tenga, o configuración del Apache...

Desde un archivo PHP lo puedes utilizar así:


Archivo:
Prueba.php
Código PHP:
require_once 'Auxiliar.php';

// Conexión a base de datos y obtención de datos.....
$campo_bd Auxiliar::GetUtf8($row['campo_obtenido']);

// Ver por pantalla
echo $campo_bd
Simplemente con esto, verás en pantalla las 'ñ' como 'ñ', las 'ç' como 'ç', etc...


Espero les resulte tan útil como a mí...

Etiquetas: cotejamiento, mysql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.