X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2FHelper%2FCharset.php;h=a72016e4b9dbe4a93882b35bc226b83b2f037255;hb=5d63c263e763338952815b6724ffa4469061afc4;hp=eca3e461be05bf2a70082e693706962632c20e97;hpb=c27693ac87a6a64a63d410f3e0cd9aa00cf7841a;p=plcapi.git diff --git a/src/Helper/Charset.php b/src/Helper/Charset.php index eca3e46..a72016e 100644 --- a/src/Helper/Charset.php +++ b/src/Helper/Charset.php @@ -168,7 +168,14 @@ class Charset $ch = $data[$nn]; $ii = ord($ch); // 7 bits: 0bbbbbbb (127) - if ($ii < 128) { + if ($ii < 32) { + if ($conversion == 'UTF-8_' || $conversion == 'UTF-8_US-ASCII') { + $escapedData .= sprintf('&#%d;', $ii); + } else { + $escapedData .= $ch; + } + } + else if ($ii < 128) { /// @todo shall we replace this with a (supposedly) faster str_replace? switch ($ii) { case 34: @@ -192,35 +199,26 @@ class Charset } // 11 bits: 110bbbbb 10bbbbbb (2047) elseif ($ii >> 5 == 6) { $b1 = ($ii & 31); - $ii = ord($data[$nn + 1]); - $b2 = ($ii & 63); + $b2 = (ord($data[$nn + 1]) & 63); $ii = ($b1 * 64) + $b2; - $ent = sprintf('&#%d;', $ii); - $escapedData .= $ent; + $escapedData .= sprintf('&#%d;', $ii); $nn += 1; } // 16 bits: 1110bbbb 10bbbbbb 10bbbbbb elseif ($ii >> 4 == 14) { $b1 = ($ii & 15); - $ii = ord($data[$nn + 1]); - $b2 = ($ii & 63); - $ii = ord($data[$nn + 2]); - $b3 = ($ii & 63); + $b2 = (ord($data[$nn + 1]) & 63); + $b3 = (ord($data[$nn + 2]) & 63); $ii = ((($b1 * 64) + $b2) * 64) + $b3; - $ent = sprintf('&#%d;', $ii); - $escapedData .= $ent; + $escapedData .= sprintf('&#%d;', $ii); $nn += 2; } // 21 bits: 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb elseif ($ii >> 3 == 30) { $b1 = ($ii & 7); - $ii = ord($data[$nn + 1]); - $b2 = ($ii & 63); - $ii = ord($data[$nn + 2]); - $b3 = ($ii & 63); - $ii = ord($data[$nn + 3]); - $b4 = ($ii & 63); + $b2 = (ord($data[$nn + 1]) & 63); + $b3 = (ord($data[$nn + 2]) & 63); + $b4 = (ord($data[$nn + 3]) & 63); $ii = ((((($b1 * 64) + $b2) * 64) + $b3) * 64) + $b4; - $ent = sprintf('&#%d;', $ii); - $escapedData .= $ent; + $escapedData .= sprintf('&#%d;', $ii); $nn += 3; } }