[interchange] Patch [area] to accept decoded strings.
Stefan Hornburg
interchange-cvs at icdevgroup.org
Mon Feb 24 18:34:17 UTC 2014
commit ce493f1cbfe196d8b6b3a636e95ea6e351060b89
Author: Marco Pessotto <melmothx at gmail.com>
Date: Mon Feb 17 16:02:30 2014 +0100
Patch [area] to accept decoded strings.
is_utf8 is badly name. First, it's an internal function, but it's
used all over the place in IC.
From the doc:
is_utf8(STRING [, CHECK])
[INTERNAL] Tests whether the UTF8 flag is turned on in the STRING. If
CHECK is true, also checks the data in STRING for being well-formed
UTF-8. Returns true if successful, false otherwise.
So, basically, is_utf8 returns true if the string is decoded, not when
is encoded in utf8.
use strict;
use warnings;
use utf8;
ok(is_utf8("Ã "));
diag "When we encode, the string is not \"utf8\" any more";
ok(!is_utf8(encode(utf8 => 'Ã ')));
lib/Vend/Util.pm | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/lib/Vend/Util.pm b/lib/Vend/Util.pm
index 2152bad..97d6c69 100644
--- a/lib/Vend/Util.pm
+++ b/lib/Vend/Util.pm
@@ -189,6 +189,12 @@ sub escape_chars_url {
my($c, $r);
$r = '';
+ if ($::Variable->{MV_UTF8} || $Global::Variable->{MV_UTF8}) {
+ # check if it's decoded
+ if (is_utf8($in)) {
+ $in = encode_utf8($in);
+ }
+ }
foreach $c (split(m{}, $in)) {
$r .= $ESCAPE_CHARS::translate_url[ord($c)];
}
More information about the interchange-cvs
mailing list