2014-12-19 20 views
1

我有以下任務:允許使用PHP掃描UPS Maxicode爲網絡表單並解析。 我的設備是USB連接的二維成像儀「摩托羅拉Symbol DS3508」,檢測爲「鍵盤」 - 替換。試圖掃描UPS Maxicode而不丟失看不見的特殊字符

我的問題:如果我掃描一個maxicode到HTML webform(文本或textarea)特殊的隱藏字符,並被丟棄。如果 - 相反 - 我使用相同的掃描器和未改變的設置將maxicode掃描到Notepad ++中,它們將被保留。試圖將記事本++中的字符串複製到相同的html webform中並使用post進行提交,這些特殊字符被保留下來,並且可以使用PHP進行檢測/解析。

問:我有什麼做的,有一個HTML網頁表單保留成像掃描過程中的特殊字符已經無需掃描到記事本++,然後再複製/粘貼到網頁表單?

任何想法是非常感激。

這裏是我的PHP/HTML代碼sniplet

<?php 
if (!isset($_POST['maxicode'])) 
{ ?> 
    <form action="<?echo $self;?>" method="post"> 
     <input type="textarea" charset="UTF-8" name="maxicode" placeholder="Scan Maxicode here" required /> 
     <input type="submit" name="submit" value="Submit"> 
    </form> 
<? } 
else { 
    //$maxicode="[)>01960680 5780661Z58416520UPSN8DDD5E0421/15NOSLO"; 
    $maxicode=$_POST['maxicode']; 
    echo $maxicode."<br>"; 
    $mc=explode ("", $maxicode); 
    print_r($mc); 
} ?> 

爲例:這裏的掃描看起來像在記事本++ Scan code

+0

你能否給我們一個關於如何正確格式化的Maxicode看起來像的例子? – jurgemaister 2014-12-19 08:38:45

+0

由於maxicode確實具有不可見字符來劃分數據字段,因此很難在此處顯示。截圖http://i.stack.imgur.com/7HmqX.jpg確實顯示格式正確的maxicode,因爲它可以在Notepad ++中閱讀。數據字符串中包含的不可打印字符爲: •[]> Rs是消息頭 •Gs用於分隔消息中的字段(十進制29) •R用於分隔格式類型(十進制30) •Fs用於分隔主要和次要地址號碼(十進制28) •Eot是傳輸字符的結尾(十進制4) – 2014-12-19 13:04:28

回答

0

我認爲問題是,非打印字符無法在傳送未編碼POST請求。解決方法是在表單傳輸之前使用JavaScript對包含非可打印字符的字符串進行編碼,然後在到達服務器後再次解碼。

像這樣的事情

// Catch that the form is being submitted 
var codeInput = document.getElementById("codeInput"); 
var unescapedCode = codeInput.value; 

// Replace content with replaced text 
codeInput.innerHTML = encodeURIComponent(unescapedCode); 

我做出了表率here。我用十六進制編輯器在字符串中插入了不可打印的字符。

然後你所要做的就是在服務器上再次解碼(使用PHP的例子)。

$code = urldecode($_POST["codeInput"]); 

現在應該包含不可打印的字符。