|
| String.indexOf + .substring med UTF8 stren~ Fra : Michael Berg |
Dato : 30-05-04 16:05 |
|
Hej Alle,
Hvordan er det lige at String.indexOf() virker sammen med UTF-8 strenge?
Jeg sidder med en ret triviel search-and-replace strengrutine, men oplever
nogle mystiske ting når jeg begynder at arbejde med strenge, der indeholder
UTF-8. Det er næsten som om at den position som String.indexOf() returnerer
ikke svarer til hvad man så efterfølgende kan hive ud med
String.substring(). Altså:
String utfstring = "abcabcabc<utf8-volapyk>defdef";
int a = utfstring.indexOf("def");
utfstring.substring(a,a+6) != defdef .... ????
Er der nogen der ved hvordan det helt præcist forholder sig med indexOf og
substring i relation til UTF-8 strenge?
Det ville også være super hvis en eller anden havde en (hurtig!)
replacesubstring dims, der selvfølgelig også virker med UTF-8. Eneste
alternativ jeg kan se er at hive strengen over i en byte array og løbe den
igennem tegn for tegn, og det kan jeg ikke forestille mig vil performe
specielt godt.
Mvh
/Michael
| |
Henrik Nielsen (30-05-2004)
| Kommentar Fra : Henrik Nielsen |
Dato : 30-05-04 16:39 |
|
Michael Berg wrote:
> Hvordan er det lige at String.indexOf() virker sammen med UTF-8 strenge?
Godt :)
Jeg har i hvert fald ikke oplevet problemer med unikode og java, bortset
fra den ikke altid fjerner den optionelle BOM i starten af filen.
Hvordan har du læst din streng ind? Java er unikode hele vejen i gennem,
men hvis du læser det ind som en inpustream, så får du de rå bytes, med
hvad dertil hører. Hvis du i stedet pakker din inputstream ind i en
reader, så kan du få din tekst dekodet som unikode.
/henrik
| |
Jonas Kongslund (31-05-2004)
| Kommentar Fra : Jonas Kongslund |
Dato : 31-05-04 15:33 |
|
On Sunday 30 May 2004 17:38, Henrik Nielsen wrote:
> Jeg har i hvert fald ikke oplevet problemer med unikode og java, bortset
> fra den ikke altid fjerner den optionelle BOM i starten af filen.
BOM?
--
Jonas Kongslund
| |
Henrik Nielsen (31-05-2004)
| Kommentar Fra : Henrik Nielsen |
Dato : 31-05-04 17:27 |
|
Jonas Kongslund wrote:
> On Sunday 30 May 2004 17:38, Henrik Nielsen wrote:
>
>>Jeg har i hvert fald ikke oplevet problemer med unikode og java, bortset
>>fra den ikke altid fjerner den optionelle BOM i starten af filen.
>
>
> BOM?
>
BOM = Byte order marking eller noget i den stil. Det er bare en måde at
skrive om bytsene står som på intel platformen eller omvendt som på
motorola. Det er to tegn FF FE eller FE FF alt efter rækkefølgen.
Normalt behøver man ikke bekymre sig om det, men jeg har i (kun) ét
tilfælde haft problemer med det.
/henrik
| |
Niels Dybdahl (02-06-2004)
| Kommentar Fra : Niels Dybdahl |
Dato : 02-06-04 09:16 |
|
> Hvordan er det lige at String.indexOf() virker sammen med UTF-8 strenge?
Java håndterer normalt char og String vha 16-bits karakterer. Så normalt
dekoder man UTF-8 om i den normale repræsentation når man læser tekst ind.
Niels Dybdahl
| |
|
|