2015-09-17 3 views
0

Я в борьбе с кодированием символов с принтером Zebra.Принтер Zebra и кодировка символов

Я использую ZebraDesigner и, например, создаю строку с текстом «Texte accentué». В сгенерированном .prn файла, строка выглядит следующим образом: ^ FT27,67^A0N, 28,28^FH \^FDTexte accentu \ 82^FS

Я предполагаю, что \ 82 является закодированной версией мое письмо é, но я не нахожу никакого отношения между ними двумя.

Любая помощь будет радушна.

ответ

0

Хорошо, я прошел через него: 0x82 (Hexa) или 130 (Dec) - это кодировка для «é» в расширенном ASCII (Codepages 437 или 850: http://www.ascii-codes.com/)

чтобы преобразовать мои строки, я должен использовать эту PHP функцию:

$text = iconv('UTF-8', 'CP437//TRANSLIT', $text); // Also works with CP850 

я, наконец, сделал этот небольшой скрипт, который преобразует только расширенные символы ASCII (Десятичный код> = 128), а основные из них правильно поняты, и я хотел, чтобы моя функция запускалась с полным файлом в качестве аргумента.

function zebraConvert($text) 
{ 
    $return = ''; 
    $arr = str_split(iconv('UTF-8', 'CP437//TRANSLIT', $text)); 
    foreach ($arr as $char) { 
     $ord = ord($char); 
     if ($ord >= 128) { 
      $return .= '\\' . dechex($ord); 
     } else { 
      $return .= $char; 
     } 
    } 
    return $return; 
} 
0

^CI - это команда, которая устанавливает кодировку. Это должно быть и на вашем выходе. Посмотрите на определение этой команды в руководстве ZPL, чтобы увидеть, как это

+0

Благодаря Банно, но моя команда работает с ZebraDesigner (без редактирования genrated файлов после этого), я не хочу, решения связанного редактировать эти файлы. –

Смежные вопросы