TP小问题
使用TP遍历Public文件夹下某个目录的所有文件名,测试了下,发现中文文件名都显示乱码,
文件都是UTF-8编码的。原生PHP测试中使用没有这个问题。特来请教。
以下是TP中代码部分:
public function index(){ $dir="./Public/Articles"; //文章目录 $data=$this->dirList($dir); $arr=array(); foreach($data as $v){ $arr[]=$v; } print_r($arr); //中文乱码 $this->ajaxReturn($arr); } public function dirList($dir){ $arr=scandir($dir); foreach($arr as $val){ if($val!='.' && $val!='..'){ $arr2[]=$val; } } return $arr2; }
如图:
回复讨论(解决方案)
window 系统的中文文件名都是 gbk 编码的
您认为是小问题吗?非也!
如果连赖以生存的环境都不甚了了,不出大问题才怪呢
您认为是小问题吗?非也!
如果连赖以生存的环境都不甚了了,不出大问题才怪呢
就算我把文件改成GBK编码,也是一样的结果。原生PHP是正常的,不会乱码。所以不知道是怎么回事。
另外吐槽下,PHP打开一个中文文本,还要转个编码,实在是太土了。
在ajaxReturn前设置header头呢?
header('Content-type:application/json;charset=utf-8');
在ajaxReturn前设置header头呢?
header('Content-type:application/json;charset=utf-8');
不可以。我后来加了
header('Content-type:text/html;charset=gbk');
倒是可以打印出中文,但是ajax返回的data那边显示出来就是NULL,实在郁闷了。
在ajaxReturn前设置header头呢?
header('Content-type:application/json;charset=utf-8');
不可以。我后来加了
header('Content-type:text/html;charset=gbk');
倒是可以打印出中文,但是ajax返回的data那边显示出来就是NULL,实在郁闷了。
header('Content-type:tex/html;charset=gbk');
ajaxReturn函数默认使用json格式输出,你在header声明为text/html,返回肯定为null啊,改为application/json试试行不行
1、linux 系统的默认字符集是 utf-8
2、简体中文 windows 系统的默认字符集是 gbk
3、TP 的工作字符集是 utf-8
所以 TP 在 linux 中不会有问题
但在 windows 中就会有乱码问题
所以你在读取文件名后,要根据操作系统做字符集转换
php 的 json 函数只支持 utf-8 字符集
PHP打开一个中文文本,还要转个编码,实在是太土了
这只是你自己再给你自己找麻烦
1、linux 系统的默认字符集是 utf-8
2、简体中文 windows 系统的默认字符集是 gbk
3、TP 的工作字符集是 utf-8
所以 TP 在 linux 中不会有问题
但在 windows 中就会有乱码问题
所以你在读取文件名后,要根据操作系统做字符集转换
php 的 json 函数只支持 utf-8 字符集
PHP打开一个中文文本,还要转个编码,实在是太土了
这只是你自己再给你自己找麻烦
我的文本不管是GBK编码还是UTF-8,返正都是乱码。ajax那边接受的文本名显示NULL。
而PHP打开 中文名字的文本,如果不转个编码打开,就是乱码,还有什么好方式么?
在同一环境中显示不同编码的数据,总是要有乱码出现的
windows下的文件名需要执行iconv('GBK','UTF-8',$name); 才能utf8编码输出。
windows读取中文文件名就是要转编码
最好的方式就是换linux,比如windows上装个linux虚拟机什么的
不然就封一个读文件的函数,读文件统一用那个函数,函数里写转换
windows下的文件名需要执行iconv('GBK','UTF-8',$name); 才能utf8编码输出。
路径中带有中文也是这么转换么?试了下好像还是乱码。
$data=$this->dirList($dir);
打印出data必须要转成GBK才能正常显示,UTF8不行。然后在ajax那边返回值就是NULL之类的。
windows读取中文文件名就是要转编码
最好的方式就是换linux,比如windows上装个linux虚拟机什么的
不然就封一个读文件的函数,读文件统一用那个函数,函数里写转换
转了编码也不成功,能指点下么?
$data=$this->dirList($dir); 这里
打印出data必须要加上 header('Content-type:text/html;charset=gbk');
才能在浏览器正常显示,UTF8不行。然后在ajax那边返回值就是NULL之类的。
gbk->utf8
$file = mb_convert_encoding($file, 'utf-8', 'UTF-8,GBK,ASCII');
utf8->gbk
$file = iconv('UTF-8', 'GBK//IGNORE', $file);
gbk->utf8
$file = mb_convert_encoding($file, 'utf-8', 'UTF-8,GBK,ASCII');
utf8->gbk
$file = iconv('UTF-8', 'GBK//IGNORE', $file);
谢谢。昨晚看了一篇博客搞定了,要在遍历的时候把每一个元素转换编码,再存入数组就可以了。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Alipay Php ...

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.
