簡體   English   中英

如何轉換解碼php中的一些特殊字符?

[英]How to convert decode some special characters in php?

我有一個編碼字符串為“%87123”。 現在,當我顯示該字符串時,它應該被解碼為“‡123”。 我的代碼如下:

$code = '%87123';
echo urldecode($code); 
die;

我嘗試了許多不同的功能,例如 urldecode、rawurldecode、htmlentities、iconv 和許多其他功能。 如果有人可以為此提供幫助。 提前致謝。

看起來這是一個字符串的 url 編碼版本,不是標准的UTF-8編碼(今天普遍使用,尤其是在 web 環境中),而是老式的、MS-Windows 專有的Windows-1252編碼。 這確實仍在某些 MS-Windows 版本中使用,它幾乎與ISO-8859-1ISO-8859-15 ,但作為典型的 MS 嘗試有點不兼容。 你現在正遭受那個眾所周知的策略的結果......

看看這個簡單的示例腳本:

<?php
var_dump(urlencode('‡123'));
var_dump(urldecode('%87123'));
var_dump(iconv('Windows-1252', 'UTF-8', urldecode('%87123')));

輸出是:

string(12) "%E2%80%A1123"
string(4) "�123"
string(6) "‡123"

因此,解碼結果可以解釋為在Windows-1252編碼的字符串。 如果是這樣,然后將其轉換為標准UTF-8編碼,則會得到預期的結果...

因此,您的情況很可能是在該 MS 內部編碼中編碼的某些字符串被注入到 Web 環境中而沒有被重新編碼。 由於 PHP 無法以某種方式神奇地猜測它是否完成了解碼工作並提供了結果,這是一個無效的 UTF-8 編碼字符串。 您必須告訴 PHP 它應該采用什么編碼,這是不可能自動檢測到的。

暫無
暫無

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

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