Jadual Kandungan
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总,htmlspecialchars
Rumah php教程 php手册 php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总,htmlspecialchars

php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总,htmlspecialchars

Jun 13, 2016 am 09:07 AM
dedecms gbk htmlspecialchars php5.4

php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总,htmlspecialchars

从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到。

可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站......!

具体表现:
复制代码 代码如下:
$str = "9enjoy.com的php版本是5.2.10";
echo htmlspecialchars($str);

gbk字符集下输出为空...utf-8下,输出正常。

为什么呢,原因在于5.4.0对这个函数的变化:
复制代码 代码如下:
5.4.0   The default value for the encoding parameter was changed to UTF-8.

原来是什么呢?
复制代码 代码如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

Defines encoding used in conversion. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards.

原来是ISO-8859-1,5.4后默认变成utf-8!然后中文使用这个函数就输出为空白了。

国内一堆开源程序在5.4下都会有这样的问题,DISCUZ官方也建议用户不要升级到5.4

解决方案:

1.苦逼的修改所有用到htmlspecialchars地方的程序

1.1 其第二个$flags参数,默认是ENT_COMPAT,因此改成
复制代码 代码如下:
htmlspecialchars($str,ENT_COMPAT,'GB2312');

为什么不是GBK?因为没有GBK这个参数,如果强行使用GBK,则报错给你看:
复制代码 代码如下:
Warning: htmlspecialchars(): charset `gbk' not supported, assuming utf-8

为了能使用GBK,则改成:
复制代码 代码如下:
htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');

1.2.一样是改程序,但可以省略一个参数。
可以在网页头部加
复制代码 代码如下:
ini_set('default_charset','gbk');

然后改成
复制代码 代码如下:
htmlspecialchars($str,ENT_COMPAT,'');

文档中有写:An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.
大概意思就是:传入空字符串则使用default_charset的编码

1.3.封装一个函数吧...本来htmlspecialchars这个单词一直不好记。
复制代码 代码如下:
function htmlout($str) {
    return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
}

然后去批量替换。

2.直接修改源码,重编译!这也是目前我在线上做的方案。
修改ext/standard/html.c
大概在372行
复制代码 代码如下:
/* Default is now UTF-8 */
if (charset_hint == NULL)
return cs_utf_8;

把cs_utf_8改成 cs_8859_1
复制代码 代码如下:
/* Default is now UTF-8 */
if (charset_hint == NULL)
return cs_8859_1;

编译后,原程序就不用做任何调整了。
安装方法可参考:http://www.bkjia.com/article/63388.htm

windows下怎么办?这个,自己想办法编译吧,难度比较大...
提供一个网址供参考:http://www.bkjia.com/article/63391.htm
引用其一句话:准备好咖啡、可乐,做好准备,可能要折腾数小时…

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Analisis pengekodan bahasa Go: Perbandingan UTF-8 dan GBK Analisis pengekodan bahasa Go: Perbandingan UTF-8 dan GBK Mar 28, 2024 pm 01:54 PM

Analisis pengekodan bahasa Go: Perbandingan UTF-8 dan GBK Dalam bahasa Go, memproses pengekodan rentetan ialah salah satu tugas biasa. Antaranya, UTF-8 dan GBK ialah dua kaedah pengekodan aksara yang biasa digunakan. Artikel ini akan menjalankan perbandingan terperinci antara UTF-8 dan GBK, membincangkan perbezaan dan penggunaannya, serta melampirkan contoh kod khusus. 1. Pengenalan kepada UTF-8 dan GBK UTF-8: UTF-8 ialah kaedah pengekodan Unicode berpanjangan boleh ubah yang boleh mewakili aksara dalam hampir semua bahasa di dunia. UTF-8

Di manakah templat rangkaian sumber cms imperial? Di manakah templat rangkaian sumber cms imperial? Apr 17, 2024 am 10:00 AM

Lokasi muat turun templat Empire CMS: Muat turun templat rasmi: https://www.phome.net/template/ Tapak web templat pihak ketiga: https://www.dedecms.com/diy/https://www.0978.com. cn /https://www.jiaocheng.com/Kaedah pemasangan: Muat turun templat Nyahzip templat Muat naik templat Pilih templat

Apakah tapak web yang boleh dilakukan oleh dedecms? Apakah tapak web yang boleh dilakukan oleh dedecms? Apr 16, 2024 pm 12:24 PM

Dedecms ialah CMS sumber terbuka yang boleh digunakan untuk membuat pelbagai jenis laman web, termasuk: laman web berita, laman web blog, laman web e-dagang, forum dan laman web komuniti, laman web pendidikan, laman web portal, jenis laman web lain (seperti laman web korporat). , tapak web peribadi, tapak web album foto, tapak web perkongsian video)

Cara dedecms melaksanakan penggantian templat Cara dedecms melaksanakan penggantian templat Apr 16, 2024 pm 12:12 PM

Penggantian templat boleh dilaksanakan dalam Dedecms melalui langkah berikut: ubah suai fail global.cfg dan tetapkan pek bahasa yang diperlukan. Ubah suai fail cangkuk taglib.inc.php dan tambah sokongan untuk fail templat akhiran bahasa. Cipta fail templat baharu dengan akhiran bahasa dan ubah suai kandungan yang diperlukan. Kosongkan cache Dedecms.

Cara menggunakan dedecms Cara menggunakan dedecms Apr 16, 2024 pm 12:15 PM

Dedecms ialah sistem CMS Cina sumber terbuka yang menyediakan pengurusan kandungan, sistem templat dan perlindungan keselamatan. Penggunaan khusus termasuk langkah-langkah berikut: 1. Pasang Dedecms. 2. Konfigurasi pangkalan data. 3. Log masuk ke antara muka pengurusan. 4. Cipta kandungan. 5. Sediakan templat. 6. Mengurus pengguna. 7. Menjaga sistem.

Bagaimana untuk memuat naik video tempatan ke dedecms Bagaimana untuk memuat naik video tempatan ke dedecms Apr 16, 2024 pm 12:39 PM

Bagaimana untuk memuat naik video tempatan menggunakan Dedecms? Sediakan fail video dalam format yang disokong oleh Dedecms. Log masuk ke bahagian belakang pengurusan Dedecms dan buat kategori video baharu. Muat naik fail video pada halaman pengurusan video, isikan maklumat yang berkaitan dan pilih kategori video. Untuk membenamkan video semasa mengedit artikel, masukkan nama fail video yang dimuat naik dan laraskan dimensi.

Laporan penilaian alat penukaran dedecms yang tepat dan boleh dipercayai Laporan penilaian alat penukaran dedecms yang tepat dan boleh dipercayai Mar 12, 2024 pm 07:03 PM

Laporan penilaian alat penukaran dedecms yang tepat dan boleh dipercayai Dengan perkembangan pesat era Internet, pembinaan laman web telah menjadi salah satu alat yang diperlukan untuk banyak syarikat dan individu. Dalam pembinaan laman web, menggunakan sistem pengurusan kandungan (CMS) boleh mengurus kandungan dan fungsi laman web dengan lebih mudah dan cekap. Antaranya, dedecms, sebagai sistem CMS yang terkenal, digunakan secara meluas dalam pelbagai projek pembinaan laman web. Walau bagaimanapun, kadangkala kita berhadapan dengan keperluan untuk menukar tapak web dedecms kepada format lain, dalam hal ini kita perlu menggunakan alat penukaran

Cara mudah untuk mempelajari fungsi penukaran pengekodan dedecms Cara mudah untuk mempelajari fungsi penukaran pengekodan dedecms Mar 14, 2024 pm 02:09 PM

Mempelajari fungsi penukaran pengekodan dedecms tidak rumit Contoh kod mudah boleh membantu anda menguasai kemahiran ini dengan cepat. Dalam dedecms, fungsi penukaran pengekodan biasanya digunakan untuk menangani masalah seperti aksara Cina yang kacau dan aksara khas untuk memastikan operasi normal sistem dan ketepatan data. Berikut akan memperkenalkan secara terperinci cara menggunakan fungsi penukaran pengekodan dedecms, membolehkan anda mengatasi pelbagai keperluan berkaitan pengekodan dengan mudah. 1.UTF-8 kepada GBK Dalam dedecms, jika anda perlu menukar rentetan dikodkan UTF-8 kepada G

See all articles