PHP를 사용하여 유니코드를 UTF-8로 변환
function unescape($str) { $str = rawurldecode($str);
<code> preg_match_all(<span>"/(?:<span>%u</span>.{4})|&#x.{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>"&#x"</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> < <span>$len</span> - <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>'</span>.<span>$unicode_name</span>.<span>'</h3>'</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> < count(<span>$matches</span>[<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 -> '.unicode_decode(<span>$unicode_name</span>);</code>
以上就介绍了用PHP将Unicode 转化为UTF-8,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











텍스트를 처리하는 동안 문자열을 다양한 인코딩 형식으로 변환하는 것은 일반적인 요구 사항입니다. PHP 언어에서 제공되는 iconv(InternationalizationConversion) 기능은 이러한 요구를 매우 편리하게 충족할 수 있습니다. 이 기사에서는 다음 측면에서 iconv 함수의 사용법을 자세히 소개합니다. iconv 함수 정의 및 공통 매개변수 소개 데모 예시: GBK 인코딩 문자열을 UTF-8 인코딩 문자열로 변환 예시 데모: UTF 변환

PHP에 대한 심층적인 이해: JSONUnicode를 중국어로 변환하는 구현 방법 개발 중에 JSON 데이터를 처리해야 하는 상황이 자주 발생하며, JSON의 유니코드 인코딩은 일부 시나리오, 특히 변환해야 할 때 몇 가지 문제를 일으킬 수 있습니다. 유니코드 인코딩을 한자로 변환하는 경우입니다. PHP에는 이러한 변환 프로세스를 달성하는 데 도움이 되는 몇 가지 방법이 아래에 소개되고 구체적인 코드 예제가 제공됩니다. 먼저 JSON의 Un을 먼저 이해해 봅시다.

유니코드는 다양한 언어와 기호를 표현하는 데 사용되는 문자 인코딩 표준입니다. 유니코드 인코딩을 중국어 문자로 변환하려면 Python의 내장 함수 chr() 및 ord()를 사용할 수 있습니다.

Eclipse에서 중국어 문자가 깨져서 고민이신가요? 이러한 솔루션을 시도하려면 구체적인 코드 예제가 필요합니다. 1. 배경 소개 컴퓨터 기술이 지속적으로 발전함에 따라 소프트웨어 개발에서 중국어의 역할이 점점 더 중요해지고 있습니다. 그러나 많은 개발자는 중국어 개발에 Eclipse를 사용할 때 잘못된 코드 문제에 직면하여 작업 효율성에 영향을 미칩니다. 그런 다음 이 기사에서는 몇 가지 일반적인 잘못된 코드 문제를 소개하고 독자가 Eclipse에서 중국어 잘못된 코드 문제를 해결하는 데 도움이 되는 해당 솔루션과 코드 예제를 제공합니다. 2. 일반적인 잘못된 코드 문제 및 솔루션 파일

이 글에서는 PHP가 반환하는 문자열의 첫 번째 문자의 ASCII 값에 대해 자세히 설명할 것입니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 글을 읽으신 후 뭔가를 얻으실 수 있기를 바랍니다. PHP는 문자열의 첫 번째 문자에 대한 ASCII 값을 반환합니다. 소개 PHP에서 문자열의 첫 번째 문자에 대한 ASCII 값을 얻는 것은 문자열 처리 및 문자 인코딩에 대한 기본 지식이 필요한 일반적인 작업입니다. ASCII 값은 컴퓨터 시스템에서 문자의 숫자 값을 나타내는 데 사용되며 문자 비교, 데이터 전송 및 저장에 중요합니다. 문자열의 첫 번째 문자에 대한 ASCII 값을 가져오는 프로세스에는 다음 단계가 포함됩니다. 문자열 가져오기: ASCII 값을 가져오려는 문자열을 결정합니다. 변수 또는 문자열 상수일 수 있습니다.

JSON(JavaScriptObjectNotation)은 웹 애플리케이션 간의 데이터 교환에 일반적으로 사용되는 경량 데이터 교환 형식입니다. JSON 데이터를 처리할 때 유니코드로 인코딩된 중국어 문자(예: "u4e2du6587")를 자주 접하고 이를 읽을 수 있는 중국어 문자로 변환해야 합니다. PHP에서는 몇 가지 간단한 방법을 통해 이러한 변환을 수행할 수 있습니다. 다음으로 JSONUnico 변환 방법을 자세히 소개하겠습니다.

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

이 글은 PHP가 다른 문자열에서 문자열의 시작 위치부터 끝 위치까지 문자열을 반환하는 방법을 자세히 설명합니다. 편집자는 이것이 꽤 실용적이라고 생각하므로 참고용으로 공유하겠습니다. 이 기사에서 뭔가를 얻을 수 있습니다. PHP에서 substr() 함수를 사용하여 문자열에서 부분 문자열을 추출합니다. substr() 함수는 문자열에서 지정된 범위 내의 문자를 추출할 수 있습니다. 구문은 다음과 같습니다. substr(string,start,length) 여기서: string: 하위 문자열을 추출할 원래 문자열입니다. start: 하위 문자열의 시작 위치에 대한 인덱스입니다(0부터 시작). 길이(선택 사항): 하위 문자열의 길이입니다. 지정하지 않은 경우
