[英]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.