From 745c6a87abb435f92e4bed53fb4fcc9082637b2d Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Sun, 26 Sep 2010 19:35:20 +0200 Subject: Fix UTF-8 IO handling and transcoding. --- localsendsms | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'localsendsms') diff --git a/localsendsms b/localsendsms index 3f5ca07..809be51 100755 --- a/localsendsms +++ b/localsendsms @@ -7,6 +7,7 @@ use strict; use warnings; +use utf8; # this document itself is UTF-8 encoded. use Env qw[$debug $info $warn $dummy $urldecode]; use Log::Log4perl qw(:easy); @@ -58,15 +59,15 @@ if ($debug) { # based on Text::Unidecode bug#8017: http://rt.cpan.org/Ticket/Display.html?id=8017#txn-322351 sub transliterate { - my ($tocharset, $string) = @_; + my $string = shift @_; - my $res = encode($tocharset, decode('GSM0338', encode('GSM0338', decode('UTF-8', $string), sub { + my $res = decode('GSM0338', encode('GSM0338', $string, sub { my $ascii = unidecode(chr $_[0]); _utf8_off($ascii); $ascii; - }))); + })); - return $res; + return $res || ''; } sub sendmsg { @@ -90,7 +91,7 @@ sub sendmsg { $url .= '&validity=' . uri_escape($sms_validity) if ($sms_validity); $url .= '&req_feat=' . uri_escape($sms_req_feat) if ($sms_req_feat); $url .= '&binfo=' . uri_escape($sms_binfo) if ($sms_binfo); - $url .= '&' . $sms_msgtag . '=' . uri_escape(transliterate($sms_cp, $msg)); + $url .= '&' . $sms_msgtag . '=' . uri_escape(encode($sms_cp, $msg)); unless ($dummy) { DEBUG "Sending request: $url"; my $response = $ua->request(HTTP::Request->new('GET', $url)); @@ -101,10 +102,10 @@ sub sendmsg { } else { DEBUG "[DUMMY] Sending request: $url"; print STDERR "\n [$from --> $to: $desc]\n\n"; - print STDERR transliterate($sms_cp, $msg) . "\n"; + print STDERR $msg . "\n"; } } -&sendmsg($sms_phone, $phone, "message", "@ARGV"); +&sendmsg($sms_phone, $phone, "message", &transliterate(decode('UTF-8', join(' ', @ARGV)))); 1; -- cgit v1.2.3