最近在做一個項目,客戶是用c#編寫的桌面應用程序,他在后台添加用戶,需要我用php做一款app實現用戶的一些基本功能。
首先是登陸,客戶直接添加的用戶密碼采用了md5加密方式,我在app登陸的時候取出數據進行驗證,驗證密碼的時候,一直提示密碼不正確,於是我打印出php md5('123456') :md5: e10adc3949ba59abbe56e057f20f883e . 但是客戶c#添加用戶的密碼卻存的是 md5(unicode): ce0bfd15059b68d67688884d7a3d3e8c
於是想辦法把php轉為unicode,試了很多辦法都不行。最后看到思否上一個提問和我遇到的問題一模一樣:“怎樣使得c#md5和php md5加密的值一樣”,然后下面有人給出了一個答案 :mb_convert_encoding( $str,'UTF-16LE','UTF-8'),迫不及待的馬上試了一下 結果果然是正確的 md5(mb_convert_enconding('123456','UTF-16LE','UTF-8')) :ce0bfd15059b68d67688884d7a3d3e8c 回去查了下手冊,發現iconc函數也可以達到此目的,唉,還是基礎掌握不扎實~
iconv
字符串按要求字符編碼來轉換
iconv($in_charset,$out_charset,$str)
將字符串¥str從 in_charset轉換編碼到out_charset
in_charset 輸入的字符集
out_charset 輸出的字符集
str 要轉換的字符串
返回值:返回轉換的字符串,或者在失敗時返回FALSE
mb_convert_encoding
轉換字符的編碼
mb_convert_encoding($str,$to_encoding,$from_encoding)
將string類型的str從可選的from_encoding轉換為to_encoding
返回值:編碼后的string