faretesto > comp.www.* > comp.www.php

NoS (10.09.2017, 11:06)
Devo elaborare una stringa (non ho controllo a monte, devo prendere la
stringa e ridarla in HTML-ENTITIES).

Esempio di stringhe problematiche:
1 - Atà Trinità;
2- Atà Trinit? (il diamond è sempre una "à").

La 1, per avere il giusto output la devo trattare così:

$stringa_1 = mb_convert_encoding($stringa, "HTML-ENTITIES", "UTF-8");

Ma se tratto la 2 allo stesso modo il risultato in uscita è:

- At? Trinit?

Allora avevo pensato di creare un metodo per testare che tipo di
codifica mi entrava ed ho preprocessato la stringa con:

$res = mb_detect_encoding ($stringa, "auto");

Il problema è che il risultato per entrambe le stringhe è "UTF-8",
quindi non so come comportarmi.

Cosa sto sbagliando?

Grazie in anticipo
Leonardo Serni (13.09.2017, 22:24)
On Sun, 10 Sep 2017 10:06:37 +0200, NoS <NoS> wrote:

>Allora avevo pensato di creare un metodo per testare che tipo di
>codifica mi entrava ed ho preprocessato la stringa con:


> $res = mb_detect_encoding ($stringa, "auto");


>Il problema è che il risultato per entrambe le stringhe è "UTF-8",
>quindi non so come comportarmi.


>Cosa sto sbagliando?


Tu poco. Ma prova:

mb_detect_encoding($stringa, 'UTF-8, ISO-8859-1', true);

per sicurezza.

Quello che io temo è che abbia sbagliato chi ti dà la stringa e ti stia
mandando robaccia in mixed charset, che ripulirla è da piangere sangue.

Il tuo esempio 2 mi fa temere questo.

Leonardo
NoS (14.09.2017, 09:54)
Grazie per la risposta,
e si è un pasticcio.

Il 13/09/2017 21:24, Leonardo Serni ha scritto:
> mb_detect_encoding($stringa, 'UTF-8, ISO-8859-1', true);


Ad ogni modo, non avevo capito di poterla usare così questa funzione.
Grazie, così facendo identifico i charset (se tipo UTF-8 e ISO-8859-1) e
li posso trattare ognuno a suo modo, corretto?
Alessandro Pellizzari (14.09.2017, 14:51)
On 14/09/2017 07:54, NoS wrote:

> Grazie per la risposta,
> e si è un pasticcio.
> Il 13/09/2017 21:24, Leonardo Serni ha scritto:
> Ad ogni modo, non avevo capito di poterla usare così questa funzione.
> Grazie, così facendo identifico i charset (se tipo UTF-8 e ISO-8859-1) e
> li posso trattare ognuno a suo modo, corretto?


Il secondo parametro è la lista dei charset da provare, in ordine. Il
primo che sembra somigliare a un risultato decente viene preso.

Ho perso una settimana a fare esperimenti, e ti posso dire per
esperienza che quella funzione non funziona (pun intended).

Non che altri metodi (anche con altri linguaggi e tool) funzionino
meglio, eh!

O sai esattamente il charset originale o non c'è modo di dargli una
lista che funzioni sempre. E se sai il charset non hai necessità di
farne il detect.

Bye.
Discussioni simili