簡體   English   中英

Mongo DB和帶有特殊字符的名稱

[英]Mongo DB and Names with special characters

我正在處理一個大型文本文件,該文件的名稱有時帶有特殊字符。 例如“ CASTA¥EDA,JASON”。 當我處理文件時,該行顯示為UTF-8。 但是,當要插入Mongo時,將顯示錯誤:

[MongoDB\Driver\Exception\UnexpectedValueException]
  Got invalid UTF-8 value serializing 'Jason Casta�eda'

然后,我繼續執行此操作:

  $name = iconv("UTF-8","UTF-8//IGNORE",$name);

現在產生:Jason Castaeda

有沒有一種方法可以查找名稱是否具有非utf-8的特殊字符。

理想情況下,很高興知道一行文件是否包含不會切入Mongo的字符。 有小費嗎?

我的意思是我可以先輸入名稱的長度,然后執行iconv並比較字符串長度,但這似乎很簡單。 還有更好的方法嗎?

我建議將所有用戶輸入的字符串轉換為Buffer 或使用ACKNOWLEDGED檢查插入/更新錯誤

編輯:對不起,完全忽略了php標簽。 嘗試這個:

function bin2text($your_binary_number) { 
    $text_str = ''; 
    $chars = explode("\n", chunk_split(str_replace("\n", '', $bin_str), 8)); 
    $_i = count($chars); 
    for ($i = 0; $i < $_i; $text_str .= chr(bindec($chars[$i])), $i  ); 
    return $text_str; 
} 

function text2bin($txt_str) { 
$len = strlen($txt_str); 
$bin = ''; 
    for($i = 0; $i < $len; $i  ) 
    { 
        $bin .= strlen(decbin(ord($txt_str[$i]))) < 8 ? str_pad(decbin(ord($txt_str[$i])), 8, 0, str_pad_left) : decbin(ord($txt_str[$i])); 
    } 
    return $bin; 
}  

摘自: http : //psoug.org/snippet/PHP-Binary-to-Text-Text-to-Binary_380.htm

text2bin基本上將您的字符串轉換為二進制文件,而bin2text()將二進制文件轉換回文本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM