Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

utf8_decode -

58 views
Skip to first unread message

leonardo.1+++

unread,
Dec 17, 2015, 10:57:02 AM12/17/15
to
Se io uso questo metodo:
$Testo = utf8_decode("Un giorno senza un sorriso è un giorno perso");
Mi da questo errore.
Notice: Uninitialized string offset: 44 in
D:\job\htdocs\stelle\Variante_K.php on line 40
La ragione sta nella eccessiva quantità di caratteri, ma come posso
ovviarvi?
Saluti
Leonardo

--
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/

fma...@gmail.com

unread,
Dec 17, 2015, 11:15:12 AM12/17/15
to
On Thursday, December 17, 2015 at 4:57:02 PM UTC+1, leonardo.1+++ wrote:
> Se io uso questo metodo:
> $Testo = utf8_decode("Un giorno senza un sorriso è un giorno perso");
> Mi da questo errore.
> Notice: Uninitialized string offset: 44 in
> D:\job\htdocs\stelle\Variante_K.php on line 40
> La ragione sta nella eccessiva quantità di caratteri, ma come posso
> ovviarvi?

Non credo sia quello il problema...

Ciao!

leonardo.1+++

unread,
Dec 17, 2015, 12:03:07 PM12/17/15
to
Qualche idea su quale sia?

fma...@gmail.com

unread,
Dec 17, 2015, 12:06:41 PM12/17/15
to
On Thursday, December 17, 2015 at 6:03:07 PM UTC+1, leonardo.1+++ wrote:
> Il 17/12/2015 17:15, fma...@gmail.com ha scritto:
> > On Thursday, December 17, 2015 at 4:57:02 PM UTC+1, leonardo.1+++ wrote:
> >> Se io uso questo metodo:
> >> $Testo = utf8_decode("Un giorno senza un sorriso è un giorno perso");
> >> Mi da questo errore.
> >> Notice: Uninitialized string offset: 44 in
> >> D:\job\htdocs\stelle\Variante_K.php on line 40
> >> La ragione sta nella eccessiva quantità di caratteri, ma come posso
> >> ovviarvi?
> >
> > Non credo sia quello il problema...
> >
> > Ciao!
> >
> Qualche idea su quale sia?
>

Io vedrei cosa c'è attorno alla riga 40: che io sappia utf8_decode non
ha (normalmente) questo tipo di problemi, per cui cercherei errori più
comuni lì intorno.

Ciao!

leonardo.1+++

unread,
Dec 17, 2015, 1:55:41 PM12/17/15
to
<?php

$Testo = utf8_decode("Un giorno senza un sorriso è un giorno perso");
for($i=0; $i<strlen($Testo); $i++)
{
echo $Testo[$i];
}

?>

lo strano è de se levo delle lettere o ne aggiungo funzioan bene.

fmigliori

unread,
Dec 17, 2015, 2:45:39 PM12/17/15
to
La codifica dell'editor è UTF-8?

Alessandro Pellizzari

unread,
Dec 18, 2015, 2:54:35 AM12/18/15
to
Il Thu, 17 Dec 2015 16:57:01 +0100, leonardo.1+++ ha scritto:

> Se io uso questo metodo:
> $Testo = utf8_decode("Un giorno senza un sorriso è un giorno perso");

> eccessiva quantità di caratteri, ma come posso ovviarvi?

Semplice: non usare utf8_decode. :)

È una delle funzioni che andrebbero rimosse da PHP, e speravo lo facessero
con la 7, ma troppa gente la usa senza sapere cosa fa e avrebbero rotto il
70% di Internet.

utf8_decode cerca di trasformare un testo in utf8 in un testo in latin1.
Naturalmente siccome latin1 supporta 255 caratteri e utf8 qualche milione,
poi la gente si lamenta che ha i cubetti neri sul browser.

Il tuo testo è in utf8? Perché ti serve trasformarlo in latin1?

E in ogni caso, iconv è sempre meglio, almeno devi essere esplicito in
quello che chiedi.

Bye.

leonardo.1+++

unread,
Dec 18, 2015, 1:55:46 PM12/18/15
to
In effetti non so bene come usarla.
Ho una stringa con dentro dei caratteri accentati e voglio vengano visti
accentati.
Fra l'altro mi da dei problemi con gli apostrofi.
Mi consigli qualche link?

Alessandro Pellizzari

unread,
Dec 19, 2015, 7:53:57 AM12/19/15
to
Il Fri, 18 Dec 2015 19:55:43 +0100, leonardo.1+++ ha scritto:

> Ho una stringa con dentro dei caratteri accentati e voglio vengano visti
> accentati.
> Fra l'altro mi da dei problemi con gli apostrofi.
> Mi consigli qualche link?

Purtroppo in informatica non esiste "una stringa con caratteri accentati",
ma solo "una stringa codificata con un certo charcode".

Devi scoprire come è codificata la tua stringa, poi scoprire come è
codificato il tuo output, e infine, se necessario, convertire l'input
nell'output.

Se la stringa è latin1 e l'output è utf8, puoi usare utf8_encode() (non
decode) che è safe. Se non hai esattamente questa combinazione, usa iconv.

Bye.

leonardo.1+++

unread,
Dec 19, 2015, 9:55:47 AM12/19/15
to
ok, esiste un comando per scoprire come una stringa è codificata?
Saluti
Leonardo.

Alessandro Pellizzari

unread,
Dec 19, 2015, 10:09:14 AM12/19/15
to
Il Sat, 19 Dec 2015 15:55:45 +0100, leonardo.1+++ ha scritto:

> ok, esiste un comando per scoprire come una stringa è codificata?

mb_detect_encoding(), ma è molto limitato.

Non c'è un modo sicuro per determinare l'encoding, visto che per lui sono
solo valori a 8 bit, quindi numeri da 0 a 255, tutti validi.

Devi anche passargli tu una lista di encoding da controllare in ordine.

In generale più è lunga la stringa e più è esotico il charset e più facile
è che individui il giusto encoding, sempre che tu glieli abbia passati
nell'ordine giusto.

L'unico modo sicuro per saperlo è saperlo già, chiedendo a chi ha scritto
quella stringa.

Bye.

leonardo.1+++

unread,
Dec 19, 2015, 11:01:35 AM12/19/15
to
OK
tanto per capire, mettiamo che io sto facendo un test in uno scritp PHP
Ho la variabile $Testo="questo è il test d'allora";
Contiene una e accentata ed un apostrofo, non c'è html ma solo lo script
nella pagina PHP.
con il comando:
echo $Testo;
Com'è che faccio vedere a video la frase esattamente come la ho scritta
Saluti
Leonardo

Leonardo Serni

unread,
Dec 19, 2015, 11:42:46 AM12/19/15
to
On Sat, 19 Dec 2015 17:01:33 +0100, "leonardo.1+++" <leona...@fastwebnet.it> wrote:

>tanto per capire, mettiamo che io sto facendo un test in uno scritp PHP
>Ho la variabile $Testo="questo è il test d'allora";
>Contiene una e accentata ed un apostrofo, non c'è html ma solo lo script
>nella pagina PHP.
>con il comando:
>echo $Testo;
>Com'è che faccio vedere a video la frase esattamente come la ho scritta

Devi dire al browser remoto di usare lo stesso encoding che stai usando tu.

Per esempio, se la frase l'hai scritta con un editor Latin1, devi inviargli
qualcosa tipo

Header("Content-Type:text/html;charset=ISO-8859-15");

mentre se è UTF-8,

Header("Content-Type:text/html;charset=utf-8");

Per capire quale encoding tu stia usando, prova nelle opzioni dell'editor -
o altrimenti puoi andare a tentativi. Manda al browser prima utf-8, poi per
sicurezza win-1252, poi iso-8859-15, e vedi quale funziona.

Leonardo

--

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.
0 new messages