Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-01-28 09:01:48

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

[C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

Witam

Nie chodzi mi o zmienną z locali - bo te znam.
Chciałem zapytać, czy jest jakaś funkcja, która zwraca samo kodowanie znaków na aktywnej konsoli (w systemie).
Czy da się to jakoś uzyskać z powłoki, czy trzeba kombinować z $LANG i awk.

Konkretnie potrzebuję taką funkcję w C, do jednego programiku - autorespondera do maili - który obecnie nie dodaje kodowania do maila, skutkiem czego jak odpowiedź działa prawidłowo na Linuxie, to na Win$ jest ..., i odwrotnie.
A zamiast mu klepać utf-8 w kodzie, wolałbym dać mu funkcję, żeby sam wiedział, co ma wstawić, nawet, jak się znajdzie w chińskim komputerze :)))
same kodowania we wszystkich znanych mi  językach programowania obsługuje iconv - ale nigdzie nie widziałem, jak w nim zakodować detekcję aktywnego kodowania w systemie.

A chodzi mi o to, żeby w nagłówku wygenerowanego maila znalazło się prawidłowe kodowanie wiadomości, żeby nie było cyrku na innych systemach.

Pozdrawiam
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#2  2011-01-28 11:14:56

  kuchar - Użytkownik

kuchar
Użytkownik
Skąd: Warszawa
Zarejestrowany: 2005-11-16
Serwis

Re: [C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

Najlepiej sprawdzić jakie kodowanie jest w mailu, który przyszedł i odpowiedzieć takim samym. Do sprawdzenia kodowania w jakim plik został zapisany możesz użyć programu (jest też lib) enca.


Linux Registered User # 406343

[i]Routing protocols enable routers to route routed protocols[/i] :)

Offline

 

#3  2011-01-28 11:27:39

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

[url=http://dug.net.pl/drukuj/124/%C5%82atwa_konwersja_z_iso_do_utf8___i_nie_tylko/]Encę znam dokładnie[/url], ale chodzi mi o poprawienie autorespondera Qmailowego.

Poza tym autoresponder odpowiada wiadomością:
o wiele prościej będzie, żeby ustawiał kodowanie systemu operacyjnego, aniżeli konwertować kodowanie do takiego, w jakim mail przyszedł.

Generalnie program nie będzie odsyłał wiadomości, tylko odpowiedź automatyczną.
W dodatku program istnieje, jest napisany w języku C, ja potrzebuję mu wbić do łba kilka poprawek.

Z tego wynika pytanie, jak to wykombinować w C, i wpakować do kodu autorespondera.

A najlepiej, żeby dało się z tego zrobić patcha, po co ktoś inny później ma się potykać o ten sam problem?
Chyba, że libenca -jest biblioteką używalną w C, w takim razie się przyda.

Pozdrawiam
;-)

Ostatnio edytowany przez Jacekalex (2011-01-28 11:28:29)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2011-01-28 12:33:57

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

Czy nie po to powstał UTF by nie mieć takich problemów? Czemu by nie wysyłać wszystkich maili w UTF-8?

Offline

 

#5  2011-01-28 12:42:54

  panjandrum - Użytkownik

panjandrum
Użytkownik
Skąd: Lublin/Kraków
Zarejestrowany: 2009-03-20

Re: [C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

http://www.gnu.org/software/libc/manual/html_node/index.html#toc_Locales


[url=https://github.com/panjandrum/obshutdown]obshutdown[/url] - Opedbox shutdown dialog

Offline

 

#6  2011-01-28 13:50:09

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [C]Jaka zmienna lub funkcja zwraca kodowanie znaków w systemie?

Chyba tak właśnie zrobię, do autorespondera wrzucę polecenie enca do zmiany na utf8 i potem na żywca nagłówki z utf-8.

Tylko kłopot jest jeszcze z tematem zgodnym z RFC - gdzie znaki charakterystyczne są zmienione w encje ascii zgodnie z tym [url=http://www.faqs.org/rfcs/rfc2047.html][b]rfc[/b][/url].

Tylko że na C się znam, jak kura na pieprzu :)))

A może przy okazji ktoś wie, jak przetworzyć nasze znaki narodowe w taki bełkot:

Kod:

BRE Bank SA z siedzib=B1 w Warszawie przy ul. Senatorskiej 18, wpisany d=
o rejestru przedsi=EAbiorc=F3w prowadzonego przez S=B1d Rejonowy dla m.s=
t. Warszawy, XII Wydzia=B3 Gospodarczy Krajowego Rejestru S=B1dowego pod=
 numerem KRS 0000025237, posiadaj=B1cy numer identyfikacji podatkowej NI=
P: 526-021-50-88, o wp=B3aconym w ca=B3o=B6ci kapitale zak=B3adowym, kt=F3=
rego wysoko=B6=E6 wg stanu na dzie=F1 01.01.2011 r. wynosi 168.346.696 z=
=B3otych.

Bo wygląda to strasznie, ale za to działa znacznie lepiej we wszystkich mozillach, outlookach, itp, niż cokolwiek innego.

Wszelkie przykłady mile widziane ;)

Pozdrawiam

Ostatnio edytowany przez Jacekalex (2011-01-28 13:55:08)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.009 seconds, 10 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00113 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.191.223.123' WHERE u.id=1
0.00089 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.191.223.123', 1714870661)
0.00043 SELECT * FROM punbb_online WHERE logged<1714870361
0.00074 DELETE FROM punbb_online WHERE ident='52.167.144.192'
0.00090 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=18184 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00158 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=18184 ORDER BY p.id LIMIT 0,25
0.00097 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18184
Total query time: 0.00683 s