用PHP将Unicode 转化为UTF-8
function unescape($str) { $str = rawurldecode($str);
<code> preg_match_all(<span>"/(?:<span>%u</span>.{4})|.{4};|\d+;|.+/U"</span>,<span>$str</span>,<span>$r</span>); <span>$ar</span> = <span>$r</span>[<span>0</span>]; <span>//print</span>_r(<span>$ar</span>); <span>foreach</span>(<span>$ar</span> as <span>$k</span>=><span>$v</span>) { <span>if</span>(<span>substr</span>(<span>$v</span>,<span>0</span>,<span>2</span>) == <span>"<span>%u</span>"</span>){ <span>$ar</span>[<span>$k</span>] = iconv(<span>"UCS-2BE"</span>,<span>"UTF-8"</span>,<span>pack</span>(<span>"H4"</span>,<span>substr</span>(<span>$v</span>,-<span>4</span>))); } elseif(<span>substr</span>(<span>$v</span>,<span>0</span>,<span>3</span>) == <span>""</span>){ <span>$ar</span>[<span>$k</span>] = iconv(<span>"UCS-2BE"</span>,<span>"UTF-8"</span>,<span>pack</span>(<span>"H4"</span>,<span>substr</span>(<span>$v</span>,<span>3</span>,-<span>1</span>))); } elseif(<span>substr</span>(<span>$v</span>,<span>0</span>,<span>2</span>) == <span>""</span>) { <span>$ar</span>[<span>$k</span>] = iconv(<span>"UCS-2BE"</span>,<span>"UTF-8"</span>,<span>pack</span>(<span>"n"</span>,<span>substr</span>(<span>$v</span>,<span>2</span>,-<span>1</span>))); } } <span>return</span><span>join</span>(<span>""</span>,<span>$ar</span>); } echo unescape(<span>"紫星蓝"</span>);</code>
今天有用户反馈,表单系统用户提交的数据中文会乱码。测试发现问题出在 iconv 转换上。
iconv(‘UCS-2’, ‘GBK’, ‘中文’)
Google 搜索发现,原因是 Linux 服务器上 UCS-2 编码方式与 Winodws 不一致。
于是,我改成 iconv(‘UCS-2BE’, ‘GBK’, ‘中文’) 试试,中文正常了
以下是有关两个平台 UCS-2 编码的潜规则:
1, UCS-2 不等于 UTF-16。 UTF-16 每个字节使用 ASCII 字符范围编码,而 UCS-2 对每个字节的编码可以超出 ASCII 字符范围。UCS-2 和 UTF-16 对每个字符至多占两个字节,但是他们的编码是不一样的。
2, 对于 UCS-2, windows 下默认是 UCS-2LE。用 MultibyteToWidechar(或者A2W)生成的是 UCS-2LE 的 unicode。windows记事本可以将文本保存为 UCS-2BE,相当于多了层转换。
3, 对于 UCS-2, linux 下默认是 UCS-2BE。用iconv(指定UCS-2)来转换生成的是 UCS-2BE 的 unicode。如果转换windows平台过来的 UCS-2, 需要指定 UCS-2LE。
4, 鉴于windows和linux等多个平台对 UCS-2 的理解不同(UCS-2LE,UCS-2BE)。MS 主张 unicode 有个引导标志(UCS-2LE FFFE, UCS-2BE FEFF),以表明下面的字符是 unicode 并且判别 big-endian 或 little-endian。 所以从 windows 平台过来的数据发现有这个前缀,不用慌张。
5, linux 的编码输出,比如从文件输出,从 printf 输出,需要控制台做适当的编码匹配(如果编码不匹配,一般和该程序编译时的编码有若干关系),而控制台的转换输入需要查看当前的系统编码。比如控制台当前的编码是 UTF-8, 那么 UTF-8 编码的东西能正确显示,GBK 就不能;同样,当前编码是 GBK, 就能显示 GBK 编码,后来的系统应该更智能的处理好更多的转换了。不过通过 putty 等终端还是需要设置好终端的编码转换以解除乱码的烦恼。
PHP中对汉字进行UNICODE编码和解码的实现
<code><span>//将内容进行UNICODE编码</span><span><span>function</span><span>unicode_encode</span><span>(<span>$name</span>)</span> {</span><span>$name</span> = iconv(<span>'UTF-8'</span>, <span>'UCS-2'</span>, <span>$name</span>); <span>$len</span> = strlen(<span>$name</span>); <span>$str</span> = <span>''</span>; <span>for</span> (<span>$i</span> = <span>0</span>; <span>$i</span> $len - <span>1</span>; <span>$i</span> = <span>$i</span> + <span>2</span>) { <span>$c</span> = <span>$name</span>[<span>$i</span>]; <span>$c2</span> = <span>$name</span>[<span>$i</span> + <span>1</span>]; <span>if</span> (ord(<span>$c</span>) > <span>0</span>) { <span>// 两个字节的文字</span><span>$str</span> .= <span>'\u'</span>.base_convert(ord(<span>$c</span>), <span>10</span>, <span>16</span>).base_convert(ord(<span>$c2</span>), <span>10</span>, <span>16</span>); } <span>else</span> { <span>$str</span> .= <span>$c2</span>; } } <span>return</span><span>$str</span>; } <span>$name</span> = <span>'MY,你大爷的'</span>; <span>$unicode_name</span>=unicode_encode(<span>$name</span>); <span>echo</span><span>'<h3 id="">'</h3></span>.<span>$unicode_name</span>.<span>''</span>; <span>// 将UNICODE编码后的内容进行解码</span><span><span>function</span><span>unicode_decode</span><span>(<span>$name</span>)</span> {</span><span>// 转换编码,将Unicode编码转换成可以浏览的utf-8编码</span><span>$pattern</span> = <span>'/([\w]+)|(\\\u([\w]{4}))/i'</span>; preg_match_all(<span>$pattern</span>, <span>$name</span>, <span>$matches</span>); <span>if</span> (!<span>empty</span>(<span>$matches</span>)) { <span>$name</span> = <span>''</span>; <span>for</span> (<span>$j</span> = <span>0</span>; <span>$j</span> $matches[<span>0</span>]); <span>$j</span>++) { <span>$str</span> = <span>$matches</span>[<span>0</span>][<span>$j</span>]; <span>if</span> (strpos(<span>$str</span>, <span>'\\u'</span>) === <span>0</span>) { <span>$code</span> = base_convert(substr(<span>$str</span>, <span>2</span>, <span>2</span>), <span>16</span>, <span>10</span>); <span>$code2</span> = base_convert(substr(<span>$str</span>, <span>4</span>), <span>16</span>, <span>10</span>); <span>$c</span> = chr(<span>$code</span>).chr(<span>$code2</span>); <span>$c</span> = iconv(<span>'UCS-2'</span>, <span>'UTF-8'</span>, <span>$c</span>); <span>$name</span> .= <span>$c</span>; } <span>else</span> { <span>$name</span> .= <span>$str</span>; } } } <span>return</span><span>$name</span>; } <span>echo</span><span>'MY,\u4f60\u5927\u7237\u7684 -> '</span>.unicode_decode(<span>$unicode_name</span>);</code>
以上就介绍了用PHP将Unicode 转化为UTF-8,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lors du traitement de texte, il est courant de convertir des chaînes dans différents formats de codage. La fonction iconv (InternationalizationConversion) fournie dans le langage PHP peut répondre à ce besoin très facilement. Cet article présentera en détail l'utilisation de la fonction iconv sous les aspects suivants : Définition de la fonction iconv et introduction aux paramètres communs Exemple de démonstration : Convertir une chaîne codée GBK en chaîne codée UTF-8 Exemple de démonstration : Convertir UTF

Unicode est une norme de codage de caractères utilisée pour représenter diverses langues et symboles. Pour convertir le codage Unicode en caractères chinois, vous pouvez utiliser les fonctions intégrées de Python chr() et ord().

Compréhension approfondie de PHP : méthode d'implémentation de conversion de JSONUnicode en chinois Au cours du développement, nous rencontrons souvent des situations où nous devons traiter des données JSON, et l'encodage Unicode en JSON nous posera quelques problèmes dans certains scénarios, en particulier lorsqu'Unicode doit être converti Lorsque l'encodage est converti en caractères chinois. En PHP, certaines méthodes peuvent nous aider à réaliser ce processus de conversion. Une méthode courante sera présentée ci-dessous et des exemples de code spécifiques seront fournis. Tout d’abord, comprenons d’abord le Un en JSON

JSON (JavaScriptObjectNotation) est un format d'échange de données léger couramment utilisé pour l'échange de données entre applications Web. Lors du traitement des données JSON, nous rencontrons souvent des caractères chinois codés Unicode (tels que « u4e2du6587 ») et devons les convertir en caractères chinois lisibles. En PHP, nous pouvons réaliser cette conversion grâce à quelques méthodes simples. Ensuite, nous détaillerons comment convertir JSONUnico

Êtes-vous gêné par les caractères chinois tronqués dans Eclipse ? Pour essayer ces solutions, vous avez besoin d'exemples de code spécifiques. 1. Introduction générale Avec le développement continu de la technologie informatique, le chinois joue un rôle de plus en plus important dans le développement de logiciels. Cependant, de nombreux développeurs rencontrent des problèmes de code tronqué lorsqu'ils utilisent Eclipse pour le développement chinois, ce qui affecte l'efficacité du travail. Ensuite, cet article présentera quelques problèmes courants de code tronqué et donnera les solutions correspondantes et des exemples de code pour aider les lecteurs à résoudre le problème du code tronqué chinois dans Eclipse. 2. Problèmes courants de code tronqué et fichiers de solutions

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Cet article expliquera en détail la valeur ASCII du premier caractère de la chaîne renvoyée par PHP. L'éditeur pense que c'est très pratique, je la partage donc avec vous comme référence, j'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP renvoie la valeur ASCII du premier caractère d'une chaîne Introduction En PHP, obtenir la valeur ASCII du premier caractère d'une chaîne est une opération courante qui implique des connaissances de base sur le traitement des chaînes et l'encodage des caractères. Les valeurs ASCII sont utilisées pour représenter la valeur numérique des caractères dans les systèmes informatiques et sont essentielles à la comparaison des caractères, à la transmission et au stockage des données. Le processus d'obtention de la valeur ASCII du premier caractère d'une chaîne implique les étapes suivantes : Obtenir la chaîne : Déterminez la chaîne pour laquelle vous souhaitez obtenir la valeur ASCII. Il peut s'agir d'une variable ou d'une constante chaîne

iconv-fencoding[-tencoding][inputfile]...[Fonction] Convertit le contenu d'un fichier donné d'un encodage à un autre. [Description]-fencoding : Convertit les caractères de l'encodage en encodage. -tencoding : convertit les caractères en codage. -l : répertorie l'ensemble connu de caractères codés -ofile : spécifie le fichier de sortie -c : ignore les caractères illégaux dans la sortie -s : supprime les messages d'avertissement, mais pas les messages d'erreur --verbose : affiche les informations de progression -f et -t peuvent Les caractères légaux spécifiés sont répertoriés dans la commande avec l'option -l. [Exemple]* Liste des encodages de caractères actuellement pris en charge
