/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste