🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.tcl
7 messages
7 total messages Started by Tomasz Motyliński Wed, 07 Feb 2007 17:07
Maly problem ze string match
#453
Author: Tomasz Motyliński
Date: Wed, 07 Feb 2007 17:07
29 lines
1974 bytes
Witam,

Napisałem sobie tcl do egga i poniżej jej fragment

(...)
elseif {[string match *\x03* $text]} {
putserv "KICK $chan $nick :$nick, nie używaj kolorków proszę! \[\037\002old
school irc\002\037 by \002m0tTo\002\]"
} elseif {[string match *\x9F* $text] ||
[string match *\xA5* $text] ||
[string match *\xB9* $text] ||
[string match *\x8C* $text] ||
[string match *\x9C* $text] ||
[string match *\x8F* $text]} {
puthelp "PRIVMSG $chan :Uwaga! Windows :)"
putserv "KICK $chan $nick :$nick, Windowsowe CP1250 jest beznadziejne! Zmień
kodowanie polskich znaków lub ich nie używaj\[\037\002old school
irc\002\037 by \002m0tTo\002\]"}
(...)

Za kolorki daje kopniaka, za znaki w CP1250 już nie i nie mam pojęcia
dlaczego. Kody pl literek się zgadzają i wykonywane są kolejne elseif'y
więc przechodzi przez to (nie zgłasza żadnych błędów). Może mi ktoś pomóć?

-- 
Tomasz Motyliński
Linux jest dla leniwych, raz zainstalowany działa wiecznie
... i do tego jaki ładny :) http://artbhp.pl/~motto/screens/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana
Re: Maly problem ze string match
#455
Author: Tomasz Motyliński
Date: Wed, 07 Feb 2007 23:11
31 lines
1893 bytes
 Witam,

 W poście <eqdkv9$ev5$1@nemesis.news.tpi.pl>
 Googie <googie@nospam.0rg> m.in. napisał(a)::

> set output "$txt | hex:"
> foreach c [split $txt ""] {
>     binary scan $c h* h
>     if {$::tcl_platform(byteOrder) == "littleEndian"} {
>         set h [string index $h 1][string index $h 0]
>     }
>     append output " $h"
> }
> dccbroadcast $output
> 
> To wyświetli Ci w konsoli bota teskt z kanału i zraz po nim kody hex
> kolejnych znaków. W ten sposób wytestujesz jakich kodów używac.

Coś mi nie idzie, jakbyś to napisał zakładając, że ma to być bind
pub - !code pub_code? czyli 

proc pub_code {nick host hand chan text} {
 ?????
return 0
}

-- 
Tomasz Motyliński
Linux jest dla leniwych, raz zainstalowany działa wiecznie
... i do tego jaki ładny :) http://artbhp.pl/~motto/screens/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana
Re: Maly problem ze string match
#456
Author: Tomasz Motyliński
Date: Wed, 07 Feb 2007 23:13
16 lines
1632 bytes
 Witam,

 W poście <eqdkv9$ev5$1@nemesis.news.tpi.pl>
 Googie <googie@nospam.0rg> m.in. napisał(a)::

> To wyświetli Ci w konsoli bota teskt z kanału i zraz po nim kody hex
> kolejnych znaków. W ten sposób wytestujesz jakich kodów używac.

Zrobiłem coś innego kazałem mu literki o tym kodzie wyświetlić na kanale i
to były dokładnie te znaki w cp1250, ja widziałem krzaki mirc pl literki.

-- 
Tomasz Motyliński
Linux jest dla leniwych, raz zainstalowany działa wiecznie
... i do tego jaki ładny :) http://artbhp.pl/~motto/screens/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana
Re: Maly problem ze string match
#454
Author: Googie
Date: Wed, 07 Feb 2007 23:46
30 lines
1769 bytes
Tomasz Motyliński wrote:

> Za kolorki daje kopniaka, za znaki w CP1250 już nie i nie mam pojęcia
> dlaczego. Kody pl literek się zgadzają i wykonywane są kolejne
> elseif'y więc przechodzi przez to (nie zgłasza żadnych błędów). Może
> mi ktoś pomóć?

Nie jestem tego pewny, ale wydaje mi się, że to jest tak, że te kody
polskich znaków są brane z CP1250, a Tcl używa kodowania UTF-8, więc
tam kody tych znaków są inne.

Najlepiej zrób sobie małego debuga, wyświetlaj w konsoli eggdropa (np
dccbroadcast) coś takiego:

set output "$txt | hex:"
foreach c [split $txt ""] {
    binary scan $c h* h
    if {$::tcl_platform(byteOrder) == "littleEndian"} {
        set h [string index $h 1][string index $h 0]
    }
    append output " $h"
}
dccbroadcast $output

To wyświetli Ci w konsoli bota teskt z kanału i zraz po nim kody hex
kolejnych znaków. W ten sposób wytestujesz jakich kodów używac.

-- 
Pozdrawiam (Regards)!
Googie
Re: Maly problem ze string match
#457
Author: olo
Date: Thu, 08 Feb 2007 07:02
14 lines
1414 bytes
Tomasz Motyliński <motto77@wp.eu> wrote:
> Zrobiłem coś innego kazałem mu literki o tym kodzie wyświetlić na kanale i
> to były dokładnie te znaki w cp1250, ja widziałem krzaki mirc pl literki.

Wczytany tekst z poziomu samego programu nie jest już kodowany
w cp1250, pomimo tego, że po ponownym wypluciu go ono powraca.
W związku z tym w kodzie programu używanie cp1250 nie ma sensu.
Może go mieć (sens), jeżeli wczytasz tekst binarnie.

A przeprowadzony przez Ciebie test niczego nie wykazał.

Serdecznie pozdrawiam

olo
Re: Maly problem ze string match
#458
Author: Tomasz Motyliński
Date: Thu, 08 Feb 2007 16:35
19 lines
1702 bytes
 Witam,

 W poście <eqehv3$8mj$1@news.task.gda.pl>
 olo@nowar.pl <olo@nowar.pl> m.in. napisał(a)::

> Wczytany tekst z poziomu samego programu nie jest już kodowany
> w cp1250, pomimo tego, że po ponownym wypluciu go ono powraca.
> W związku z tym w kodzie programu używanie cp1250 nie ma sensu.
> Może go mieć (sens), jeżeli wczytasz tekst binarnie.

Jeśli dobrze rozumiem, muszę znaleźć kod w UTF, który będzie odpowiadał
literkom Ą,ą,Ś,ś,Ź,ź w CP1250?


-- 
Tomasz Motyliński
Linux jest dla leniwych, raz zainstalowany działa wiecznie
... i do tego jaki ładny :) http://artbhp.pl/~motto/screens/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana
Re: Maly problem ze string match
#459
Author: olo
Date: Fri, 09 Feb 2007 05:57
21 lines
1779 bytes
Tomasz Motyliński <motto77@wp.eu> wrote:
> Witam,
> 
> W poście <eqehv3$8mj$1@news.task.gda.pl>
> olo@nowar.pl <olo@nowar.pl> m.in. napisał(a)::
> 
>> Wczytany tekst z poziomu samego programu nie jest już kodowany
>> w cp1250, pomimo tego, że po ponownym wypluciu go ono powraca.
>> W związku z tym w kodzie programu używanie cp1250 nie ma sensu.
>> Może go mieć (sens), jeżeli wczytasz tekst binarnie.
> 
> Jeśli dobrze rozumiem, muszę znaleźć kod w UTF, który będzie odpowiadał
> literkom Ą,ą,Ś,ś,Ź,ź w CP1250?
> 

Jeżeli się nie mylę, a nie jestem człowiekiem nieomylnym, to należy
tak zrobić. Chodzi oczywiście o UTF-8 (dla jasności). A żeby było
zupełnie prosto, sugeruje wszystko co przychodzi (każdy znak) zamie-
niać na liczbę dziesiętną i wyrzucać na konsole. Napewno zadziała :)

olo
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads