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

Oracle i ISO-8859-2 (Latin2)

634 views
Skip to first unread message

Tdobe

unread,
May 5, 2012, 5:28:46 AM5/5/12
to
Mam wielki problem z przekodowaniem naszego kodowania na utf8...

Już próbowałem wszystkiego,

a po pierwsze fukcji convert('tekst', 'UTF8', EE8ISO8859P2);

plik jest sciągany z http do cloba za pomocą utl_http.request(p_url),
ale to nie ma większego znaczenia

win1250 i polskie znaki pod notatnikiem som;) ale jak to zrobić w
oracle?

Oracle 11G AL32UTF8?

Sławomir Szyszło

unread,
May 5, 2012, 10:36:37 AM5/5/12
to
Dnia Sat, 5 May 2012 02:28:46 -0700 (PDT), Tdobe <tdob...@gmail.com>
wklepał(-a):
Napisz dokładniej co chcesz zrobić. Jakie jest źródło danych, w jakim kodowaniu,
co z tym robisz i jakie masz kodowanie w bazie (select * from
nls_database_parameters)?
--
Sławomir Szyszło
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych

Tdobe

unread,
May 6, 2012, 6:19:41 AM5/6/12
to
Sciągam plik tekstowy z adresu www, oto on: http://www.artgum.com.pl/stanyartgum.csv
(pod oraclem)
i zapisuje go do cloba

wynika zapytania z bazy danych:

"PARAMETER" "VALUE"
"NLS_LANGUAGE" "AMERICAN"
"NLS_TERRITORY" "AMERICA"
"NLS_CURRENCY" "$"
"NLS_ISO_CURRENCY" "AMERICA"
"NLS_NUMERIC_CHARACTERS" ".,"
"NLS_CHARACTERSET" "AL32UTF8"
"NLS_CALENDAR" "GREGORIAN"
"NLS_DATE_FORMAT" "DD-MON-RR"
"NLS_DATE_LANGUAGE" "AMERICAN"
"NLS_SORT" "BINARY"
"NLS_TIME_FORMAT" "HH.MI.SSXFF AM"
"NLS_TIMESTAMP_FORMAT" "DD-MON-RR HH.MI.SSXFF AM"
"NLS_TIME_TZ_FORMAT" "HH.MI.SSXFF AM TZR"
"NLS_TIMESTAMP_TZ_FORMAT" "DD-MON-RR HH.MI.SSXFF AM TZR"
"NLS_DUAL_CURRENCY" "$"
"NLS_COMP" "BINARY"
"NLS_LENGTH_SEMANTICS" "BYTE"
"NLS_NCHAR_CONV_EXCP" "FALSE"
"NLS_NCHAR_CHARACTERSET" "AL16UTF16"
"NLS_RDBMS_VERSION" "11.2.0.2.0"

robię to w ten sposób:

req := UTL_HTTP.BEGIN_REQUEST(p_url);
UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/5.0');
utl_http.set_header(req, 'Transfer-Encoding', 'chunked');
UTL_HTTP.SET_FOLLOW_REDIRECT(req, 0);
resp := UTL_HTTP.GET_RESPONSE(req);

p_clob := null;

pieces := utl_http.request_pieces(p_url);

FOR i in 1 .. pieces.count loop
p_clob := p_clob || pieces(i);
END LOOP;


Możemy się umówić na jakąś odpłatność;), bo już nie mam na to czasu...

Pozdrawiam

MalyWesolyTroll

unread,
May 6, 2012, 7:48:37 AM5/6/12
to
Dnia Sun, 6 May 2012 03:19:41 -0700 (PDT), Tdobe napisał(a):

> Sciągam plik tekstowy z adresu www, oto on: http://www.artgum.com.pl/stanyartgum.csv

ten plik ma kodowanie CP-1250 (Windows-1250) a nie ISO-8859-2

--
Mały troll

Tdobe

unread,
May 6, 2012, 8:01:25 AM5/6/12
to
No wiem, ( w sumie )

próbowałem też EE8MSWIN1250 i nie działa, bo z tego co podejzewam że
skoro wczytuje do do CLOBA to jest to clob UTF-8 z tekstem
zawierającym kodowanie WIN1250, i np. polecenie

i z tąd to zamieszanie, na moj nos trzeba by było przekonwertować z
win1250 na utf-8 przed wstawieniem go do cloba, albo tak
przekonwertowac cloba, aby byl to faktycznie utf8 a nie win1250...

i już się trochę pogubiłem;)

wykonuję to tak:

convert(a.linia, 'AL32UTF8', 'EE8MSWIN1250') wypluwa:

"23X8.5/10.5-12KN.|DÄ餀琀欀愀 匀琀愀爀挀漀 ㈀㌀堀㠀⸀㔀⼀㄀ ⸀㔀ⴀ㄀㈀䬀一簀簀簀㈀㤀Ⰰ    簀Ⰰ    簀Ⰰ
簀㌀㔀㜀㜀㘀簀䐀쒘TKI|STARCO|INNE|Katalogowa4"

ps. a.linia to pociety clob na linie za pomocą

dbms_lob.instr i dbms_lob.SUBSTR i szukaniem chr(10).

czyli jesli podejzewam ze jesli http_request nie ma parametrow do
okreslenia w jakim kodowaniu sa dane, to trzeba to przekonwertowac w
clobie, tylko juz nie wiem jak, nic nie znalazlem co by działało.

Tdobe

unread,
May 6, 2012, 8:30:05 AM5/6/12
to
Rasumując podejżewam że do CLOBA (UTF8) jest wczytywana zawartość w
kodowaniu WIN1250...

Tdobe

unread,
May 6, 2012, 1:14:25 PM5/6/12
to
Zrobiłem dumpa (select dump(substr(linia, 20, 1)) gdzie 20 znak to "ę"
i dostałem kod 0, 234 czyli 00EA, a EA to "ę" w WIN1250, czyli się
potwierdziło załadowałem WIN1250 do UTF8 (CLOB)... tylko jak to
skonwertować ...

Tdobe

unread,
May 6, 2012, 1:18:32 PM5/6/12
to
chyba żeby załadować do zwykłego bloba i później skonwertować go na
cloba z konwersją znaków z CP1250 na UTF8???:)

Tdobe

unread,
May 6, 2012, 4:32:57 PM5/6/12
to
No i też lipa, po sciągnieciu pliku przez przeglądarkę jest OK (np.
"ę" to EA)

a po sciągnieciu przez oracla do BLOBA w blobie jest już "C3EA"....

Tdobe

unread,
May 6, 2012, 5:26:20 PM5/6/12
to
No w końcu!!! trochę inaczej ale może komuś się to przyda:

bezpośrednio do tabeli za pomocą funkcji:
httpuritype("www.oracle.com").getblob()

:)))

Sławomir Szyszło

unread,
May 9, 2012, 5:46:10 AM5/9/12
to
Dnia Sun, 6 May 2012 14:26:20 -0700 (PDT), Tdobe <tdob...@gmail.com>
wklepał(-a):
Skoro w tabeli jest CLOB, to możesz pokombinować też z DBMS_LOB.CONVERTTOCLOB()
0 new messages