Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z konwersją nieznanych kodowań na UTF8 w bazie SQLITE
nowy_pehapowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Dostałem bazę danych w której dane były wpisane w różnych kodowaniach. Część w językach europejskich a cześć w azjatyckich, przy czym teksty powinny zawierać tylko znaki łacińskie. Teksty z bazy są wyświetlane przy użyciu kodowania utf8 ale na niektórych komputerach w miejscach spacji albo przecinków pojawiają się krzaki. Czyli muszę teraz przekonwertować wszystkie wpisy w bazie na utf8. Ale nie znam kodowań źródłowych, część jest w UTF8, cześć w GB2312, część w różnych wersjach ISO (np iso-8859-1).
W dodatku bazą jest SQLITE, która, ponoć domyślnie używa UTF8.

Jak zamienić to kodowanie nie uszkadzając tekstów? Przejrzałem funkcje z pakietu multibyte ale nie działają w 100% dobrze. Jakieś pomysły?


pozdrawiam

Ten post edytował nowy_pehapowiec 18.11.2009, 13:21:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nowy_pehapowiec
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Zyx Twoje rozwiązanie jest super, ale ma dużą wadę, jego napisanie jest troszkę trudne i bardzo czasochłonne.

Mi udało się wymyślić coś innego, ale nie wiem czy będzie dobre.

1 Wklejam tablice wartości HEX dla kodowania UTF-8 (http://www.utf8-chartable.de/). Tekst jest po angielsku, więc powinno wystarczyć, ale o tym potem.
2 Wszystkie pola z tekstem sklejam w jedną zmienną.
3 Następnie funkcją str_split rozdzielam znaki w tekście.
4 Każdy znak zamieniam funkcją bin2hex na wartości HEX i zapasuje do tablicy
5 Porównuje tablice z hexami z UTF-8 i z hexami z tekstu. Te które są w tekście a których nie ma w UTF zapisuje do kolejnej tablicy.
6 Sprawdzam jaka sekwencja hex w UTF-8 jest odpowiednikiem wybranych znaków.
7 Zamieniam w każdym polu "złe"hexy na "dobre"

Czy to będzie działać? Jest w tym może jakiś błąd?


pozdro
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 08:05