summaryrefslogtreecommitdiff
path: root/LedgerSMB
diff options
context:
space:
mode:
Diffstat (limited to 'LedgerSMB')
-rw-r--r--LedgerSMB/Form.pm7
-rw-r--r--LedgerSMB/Locale.pm3
-rw-r--r--LedgerSMB/Sysconfig.pm2
3 files changed, 9 insertions, 3 deletions
diff --git a/LedgerSMB/Form.pm b/LedgerSMB/Form.pm
index bb8ec4cb..7dbb0451 100644
--- a/LedgerSMB/Form.pm
+++ b/LedgerSMB/Form.pm
@@ -41,6 +41,9 @@ use Time::Local;
use Cwd;
use File::Copy;
+use charnames ':full';
+use open ':utf8';
+
package Form;
sub new {
@@ -98,7 +101,7 @@ sub new {
$self->error( "Access Denied", __line__, __file__ );
}
- for ( keys %$self ) { $self->{$_} =~ s/\000//g }
+ for ( keys %$self ) { $self->{$_} =~ s/\N{NULL}//g }
$self;
}
@@ -138,6 +141,7 @@ sub escape {
$str = $self->escape( $str, 1 ) if $1 == 0 && $2 < 44;
}
+ $str = utf8::encode('utf8', $str);
$str =~ s/([^a-zA-Z0-9_.-])/sprintf("%%%02x", ord($1))/ge;
$str;
@@ -150,6 +154,7 @@ sub unescape {
$str =~ s/\\$//;
$str =~ s/%([0-9a-fA-Z]{2})/pack("c",hex($1))/eg;
+ $str = utf8::decode('utf8', $str) unless utf8::is_utf8($str);
$str =~ s/\r?\n/\n/g;
$str;
diff --git a/LedgerSMB/Locale.pm b/LedgerSMB/Locale.pm
index c89fbef0..6b1c4e66 100644
--- a/LedgerSMB/Locale.pm
+++ b/LedgerSMB/Locale.pm
@@ -27,7 +27,6 @@
package LedgerSMB::Locale;
use base 'Locale::Maketext';
use Locale::Maketext::Lexicon;
-use HTML::Entities;
use Encode;
Locale::Maketext::Lexicon->import(
@@ -40,7 +39,7 @@ Locale::Maketext::Lexicon->import(
sub text {
my ( $self, $text, @params ) = @_;
- return encode_entities( $self->maketext( $text, @params ) );
+ return $self->maketext( $text, @params );
}
##sub date {
diff --git a/LedgerSMB/Sysconfig.pm b/LedgerSMB/Sysconfig.pm
index f8e1145f..e2b8c09d 100644
--- a/LedgerSMB/Sysconfig.pm
+++ b/LedgerSMB/Sysconfig.pm
@@ -8,6 +8,8 @@ use LedgerSMB::Form;
use Config::Std;
use DBI qw(:sql_types);
+binmode STDOUT, ':utf8';
+
# For Win32, change $pathsep to ';';
$pathsep = ':';