Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14853|Atbildi: 0

[Avots] MK prefiksa problēmas, kas radušās, lasot unikoda failus (UTF-8 utt.) programmā Java

[Kopēt saiti]
Publicēts 14.01.2019 16:26:17 | | |
MK pirmo rakstzīmju problēma, kas radusies, lasot Unicode failus (UTF-8 utt.) Java, un kā ar tām rīkoties

Teksta failiem, kas izveidoti, izmantojot Windows teksta redaktoru, faila galvenei (pirmajai rakstzīmei) tiks pievienots MK ID, ja izvēlaties tos saglabāt unikoda formātā, piemēram, UTF-8.

Šī identifikācija netiek noņemta, kad fails tiek lasīts Java, un String.trim() nevar noņemt. Ja izmantojat readLine(), lai lasītu pirmo rindiņu un saglabātu to virknē, virknes garums būs par 1 lielāks nekā redzamais, un pirmā rakstzīme ir šī MK.

Tas var radīt problēmas, piemēram, lasot ini failu, ja vēlaties noteikt, vai pirmā rindiņa sākas ar "[", jūs nevarat pareizi spriest.

Par laimi, kad Java lasa Unicode failus, tā vienmērīgi maina MK uz "\uFEFF", lai jūs varētu to atrisināt manuāli (pēc sprieduma izmantojiet substring() vai replace(), lai noņemtu šo MK):

Tomēr,Šī pieeja nav ideālaJa ģenerētais jar fails darbojas operētājsistēmā Windows, problēma joprojām pastāv. Galvenais risinājums ir izmantot BOMInputStream, ko nodrošina apache commons io:

Kas ir MK?


MK = baitu pasūtījuma atzīme
MK ir ieteicamā metode, lai atzīmētu baitu secību unikoda specifikācijā. Piemēram, UTF-16, ja uztvērējs saņem FEFF MK, tas norāda, ka baitu plūsma ir Big-Endian; Ja tiek saņemts FFFE, tas norāda, ka baitu straume ir Little-Endian.
UTF-8 nav nepieciešama MK, lai norādītu baitu secību, bet to var izmantot, lai norādītu "Es esmu kodēts UTF-8". MK UTF-8 kodējums ir EF BB BF (kā redzams, atverot tekstu ar UltraEdit un pārslēdzoties uz heksadecimālu). Tātad, ja uztvērējs saņem baitu plūsmu, kas sākas ar EF BB BF, viņi zina, ka tas ir UTF-8 kodējums.





Iepriekšējo:Džeksona bieži sastopamie kļūdu risinājumi
Nākamo:Bāra kodēšanas programmatūra Bārmenis!
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com