Discussion:
Cyrylica (i nie tylko) w URL (i nie tylko) :-)
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Marsjanin
2005-01-25 23:37:00 UTC
Permalink
Witam!

Na początek pragnę się serdecznie przywitać, bom tu nowy.

Na drugi początek... Cóż, mam nadzieję, że za sam temat już planka nie
dostałem? No tak, grupa "o POLSKICH literkach w komputerach" - a ja tu
z ruskimi wyjeżdżam... Niemniej sprawa, o którą chce zapytać, ma nieco
wspólnego z polskimi ogonkami.

Najpierw może przykład...?

Otóż, Google jak zapewne wiecie, kodują polskie litery w linkach... No
właśnie - JAK? Wiem, że do zakodowania każdego znaku w np. linku
wyszukiwania Google, potrzeba jednego bajtu - zapisanego w formie
szesnastkowej poprzedzonego "%", np:



" -> %22
+ -> %2B
-> %20



Niemniej polskie litery takich bajtów potrzebują już dwóch:



ą -> %C4%85
ś -> %C5%9B



itd. Co to za system kodowania?

Idźmy dalej (do celu). :-) Trafiłem sobie na serwer, konkretnie
przedstawił się w widoku folderów w HTTP jako Apache. Na serwerze były
pliki o długich nazwach. Zapisane cyrylicą. W Apache widać tylko
początek nazwy pliku. Po zapisaniu plików na dysku, nazwy przyjęły
postać z linków, tj,:



abc.txt -> %xx%yy%xx%yy%xx%yy.txt



gdzie oczywiście xx oraz yy to dwa bajty odpowiedzialne za jedną
bukwę... Nie wiem, jak to rozgryźć. Chciałbym odzyskać te nazwy plików
- choćby i do pliku tekstowego, wiem, że mój Windows (ME) nie wspiera
Unicode. Skopiować to nie problem, ale co potem - jakiś konwerter?

Z góry dzięki za odpowiedzi, i przepraszam za ewentualny OT.
--
Pozdrawiam - Marsjanin. (Sygnaturka v.Beta)
www.marsjanin.tk gg:4548104 tlen:marsjanin-tk callto:marsjanin.tk
Chwilowo nic nie gra. :-] Cudowna cisza.
Marcin 'Qrczak' Kowalczyk
2005-01-25 23:55:05 UTC
Permalink
Post by Marsjanin
ą -> %C4%85
ś -> %C5%9B
To jest UTF-8 (i bajty zapisane szesnastkowo).
--
__("< Marcin Kowalczyk
\__/ ***@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Marsjanin
2005-01-26 17:45:56 UTC
Permalink
Rok 2005 - styczeń. Koło 26-go. Chyba środa. Nieco po 0-ej.
Post by Marcin 'Qrczak' Kowalczyk
To jest UTF-8 (i bajty zapisane szesnastkowo).
Whaaa. Odpowiedź konkretna i ekspresowa. Dzięki. :-)
--
Pozdrawiam - Marsjanin. (Sygnaturka v.Beta)
www.marsjanin.tk gg:4548104 tlen:marsjanin-tk callto:marsjanin.tk
Gra: Renata Przemyk : 4. "Klonator"
Brzmi: live, 44 kHz, 1408 kbps.
Marcin Frankowski
2005-01-26 09:31:47 UTC
Permalink
Wed, 26 Jan 2005 00:37:00 +0100, Marsjanin
Post by Marsjanin
Na początek pragnę się serdecznie przywitać, bom tu nowy.
Cześć, witaj :-)
Post by Marsjanin
Na drugi początek... Cóż, mam nadzieję, że za sam temat już planka nie
dostałem?
Nie (a przynajmniej nie ode mnie jak widać).
Post by Marsjanin
ą -> %C4%85
ś -> %C5%9B
itd. Co to za system kodowania?
To jest UTF-8 w postaci encji szesnastkowych. W UTF-8 znaki polskie i
cyrylica (i dość dużo innych znaków) są kodowane w dwóch bajtach.

Odkodowanie na piechotę jest dość upierdliwe:
1. najpierw przekształcasz oba bajty do postaci binarnej:
C4 85 -> 11000100 10000101
2. teraz ze starszego bajtu wyrzucasz pierwsze 110, a z młodszego -
pierwsze 10, po czym łączysz obie części w jedną liczbę dwójkową
11000100 10000101 -> 00100 000101 -> 00100000101
3. przekształcasz do postaci dziesiętnej lub szesnastkowej
00100000101 -> 261(dec) albo 105(hex)
4. z http://www.unicode.org/charts/ ściągasz tablicę znaków w
odpowiednim zakresie unikodu (cyrylica) i w niej szukasz znaku o
znalezionym kodzie.

Niestety nie znam łatwiejszej metody ani żadnego narzędzia do
ułatwienia sobie zadania.

Wszystkie małe Windowsy (95, 98 i ME) mogą obsługiwać znaki spoza ascii
w nazwach katalogów i plików wyłącznie pod warunkiem, że te znaki
należą do obecnie używanej strony kodowej, więc nie możesz mieć plików
z nazwami zawierającymi znaki cyrylicy. Tzn. możesz mieć te pliki, ale
nie będziesz mógł ich otworzyć bez wywalenia obsługi strony kodowej 852
i wstawienia za to obsługi strony kodowej 866. Będziesz mógł jedynie
wpisać sobie te nazwy bukwami w jakimś pliku (IMO nie tekstowym, tylko
co najmniej RTF).

Mam nadzieję, że dobrze zrozumiałem Twój problem.
--
Marcin Frankowski
chcesz wysłać maila, to kliknij: http://www.cerbermail.com/?CmCLSDi9lm
http://www.nowazelandia.prv.pl http://www.antyspam.prv.pl
Marsjanin
2005-01-26 17:52:40 UTC
Permalink
Rok 2005 - styczeń. Koło 26-go. Chyba środa. Nieco po 10-ej.
Post by Marcin Frankowski
To jest UTF-8 w postaci encji szesnastkowych. W UTF-8 znaki polskie
i cyrylica (i dość dużo innych znaków) są kodowane w dwóch bajtach.
Rozumiem, że chyba wszystkie poza US-ASCII?
Ojjj, fakt...
Post by Marcin Frankowski
Niestety nie znam łatwiejszej metody ani żadnego narzędzia do
ułatwienia sobie zadania.
:-( Trudno. Dzięki Ci i za te wskazówki! Może coś mi się uda pod
jakimś Wordem, czy Excelem... Ostatecznie poproszę kumpla o jakiś
programik w Pascalu (o ile sie da). :-)
Post by Marcin Frankowski
Będziesz mógł jedynie wpisać sobie te nazwy bukwami w jakimś pliku
(IMO nie tekstowym, tylko co najmniej RTF).
Ależ dlaczego nie? .txt się do tego nadaje, tylko czcionkę trzeba
zmienić na ...Cyr, z tego co wiem...? Chyba, że o kodowanie Unicode
chodzi... Hmm, no tak, przecież tak zakodowany plik jest chyba w
CP-1251... Hmm. No cóż, dzięki za klucz do rozwiązania zagadki.
--
Pozdrawiam - Marsjanin. (Sygnaturka v.Beta)
www.marsjanin.tk gg:4548104 tlen:marsjanin-tk callto:marsjanin.tk
Gra: Renata Przemyk : 5. "Sex telefon"
Brzmi: live, 44 kHz, 1408 kbps.
Marcin 'Qrczak' Kowalczyk
2005-01-26 18:45:25 UTC
Permalink
Post by Marsjanin
Post by Marcin Frankowski
To jest UTF-8 w postaci encji szesnastkowych. W UTF-8 znaki polskie
i cyrylica (i dość dużo innych znaków) są kodowane w dwóch bajtach.
Rozumiem, że chyba wszystkie poza US-ASCII?
Nie, niektóre w trzech albo czterech.
--
__("< Marcin Kowalczyk
\__/ ***@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Marsjanin
2005-01-26 21:59:56 UTC
Permalink
Rok 2005 - styczeń. Koło 26-go. Chyba środa. Nieco po 19-ej.
Post by Marcin 'Qrczak' Kowalczyk
Post by Marsjanin
Post by Marcin Frankowski
To jest UTF-8 w postaci encji szesnastkowych. W UTF-8 znaki
polskie i cyrylica (i dość dużo innych znaków) są kodowane w
dwóch bajtach.
Rozumiem, że chyba wszystkie poza US-ASCII?
Nie, niektóre w trzech albo czterech.
Aaa, w tę stronę... No tak. Ale które w jednym?
--
Pozdrawiam - Marsjanin. (Sygnaturka v.Beta)
www.marsjanin.tk gg:4548104 tlen:marsjanin-tk callto:marsjanin.tk
Trwa zmiana strony kasety lub CD.
Marcin 'Qrczak' Kowalczyk
2005-01-26 22:42:43 UTC
Permalink
Post by Marsjanin
Post by Marcin 'Qrczak' Kowalczyk
Post by Marsjanin
Post by Marcin Frankowski
To jest UTF-8 w postaci encji szesnastkowych. W UTF-8 znaki
polskie i cyrylica (i dość dużo innych znaków) są kodowane w
dwóch bajtach.
Rozumiem, że chyba wszystkie poza US-ASCII?
Nie, niektóre w trzech albo czterech.
Aaa, w tę stronę... No tak. Ale które w jednym?
W jednym tylko ASCII.

http://en.wikipedia.org/wiki/UTF-8
--
__("< Marcin Kowalczyk
\__/ ***@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Marsjanin
2005-01-27 21:24:18 UTC
Permalink
Rok 2005 - styczeń. Koło 26-go. Chyba środa. Nieco po 23-ej.
Post by Marcin 'Qrczak' Kowalczyk
Post by Marsjanin
Aaa, w tę stronę... No tak. Ale które w jednym?
W jednym tylko ASCII.
http://en.wikipedia.org/wiki/UTF-8
<KLIK!> Dzięki.
--
Pozdrawiam - Marsjanin. (Sygnaturka v.Beta)
www.marsjanin.tk gg:4548104 tlen:marsjanin-tk callto:marsjanin.tk
Gra: Keiichi Suzuki : 06/15. "The wasteland massacre and the reminiscence og Geisha"
Brzmi: FhG (fastenc, low quality mode), 44 kHz, 160 kbps, Dual Channel.
Loading...