Aún no entiendo cómo funciona iconv
.PHP: Tratar caracteres especiales con iconv
Por ejemplo,
$string = "Löic & René";
$output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
consigo,
Aviso: iconv() [function.iconv]: detecta un carácter no válido en la entrada cadena en ...
$string = "Löic";
o $string = "René";
consigo,
Aviso:. iconv() [function.iconv]:
detecta un carácter multibyte incompleta en cadena de entrada en
no consigo nada con $string = "&";
Hay dos conjuntos de diferentes salidas que necesito almacenarlos en los dos diferentes columnas dentro de la tabla de mi base de datos,
que necesitan para convertir a
Löic & René
Loic & Rene
de URL limpia pu rposes.tengo que mantenerlos lo que son - como
Löic & René
Löic & René
entonces sólo convertirlos conhtmlentities($string, ENT_QUOTES);
al mostrarlos en mi página html.
he intentado con algunas de las sugerencias en php.net abajo, pero todavía no trabajo,
que tenía una situación en la que necesitaba algunos caracteres transliterados, pero los otros ignorados (por diacríticos extrañas como Ayn o hamza). Agregar // TRANSLIT // IGNORE pareció ser el truco para mí. Transcribe todo lo que se puede transcribir, pero luego arroja cosas que no pueden ser transcritas.
Así:
$string = "ʿABBĀSĀBĀD";
echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $string);
// output: [nothing, and you get a notice]
echo iconv('UTF-8', 'ISO-8859-1//IGNORE', $string);
// output: ABBSBD
echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string);
// output: ABBASABAD
// Yay! That's what I wanted!
y otro,
Andries Seutens 07-Nov-2009 07:38
When doing transliteration, you have to make sure that your LC_COLLATE is properly set, otherwise the default POSIX will be used.
To transform "rené" into "rene" we could use the following code snippet:
setlocale(LC_CTYPE, 'nl_BE.utf8');
$string = 'rené';
$string = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
echo $string; // outputs rene
¿Cómo puedo trabajar realmente a cabo?
Gracias.
EDIT:
Este es el archivo de origen que probar el código,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
$string = "Löic & René";
$output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
?>
</html>
Por cierto: ¿te das cuenta de que 'ö' &' é' están en ISO-8859-1?Además del conjunto de caracteres de entrada incorrecto, es posible que desee modificar su juego de caracteres de salida a 'ASCII // TRANSLIT'. – Wrikken
Estoy tan confundido con estos conjuntos ... – laukok
¡Gracias! Tuve que descifrar algunos caracteres coreanos en UTF-8 y fue un verdadero dolor de cabeza; finalmente, lo único que me ayudó fue: '$ converted = iconv ('EUC-KR', 'UTF-8 // TRANSLIT', $ data); ' – ShayLivyatan