Maison php教程 php手册 php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法

php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法

Jun 06, 2016 pm 08:27 PM
bom

以下是对php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下

date.csv:
"ID" "NAME" "EMAIL"
"1" "小明" "xm@163.com"
"2" "小东" "xd@sina.com"
"3" "小少" "shaozi@hotmai.com"

读取这个csv文件

复制代码 代码如下:


$handle=fopen('date.csv','r');
while($data=fgetcsv($handle,10000,"/t"))  
{  
  echo "$data[0]"."$data[1]"."$data[2]";  
}
?>


读取后在页面上显示时,成了这样:
"ID" NAME EMAIL
 1 小明 xm@163.com
 2 小东 xd@sina.com
 3 小少 shaozi@hotmai.com
fgetcsv函数的字段环绕符默认是双引号,
为什么我读取出来时,其它字段都好好的,可是ID还有双引号包着?

上网查了下,原来是utf8编码的bom在php下无法识别.
下面是查来的资料:
Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在
这里
找到一段关于BOM的说明:
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。

另外unicode网站的
FAQ-BOM
详细介绍了BOM。官方的自然权威,不过是英文的,看起来比较费劲。
UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,网站空间,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,美国空间,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。我在研究Firefox的时候就知道,在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。

PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。请参考下面的图片:



根据Bo-Blog的wiki的说明:Editplus需要先另存为gb,再另存为UTF-8。不过这样做要小心,所有GBK编码中不包含的字符就会都丢了。如果有一些非中文的字符在文件里的话还是不要用这种办法了。(从这一个小方面来看,UE——UltraEdite-32确实比Editplus好很多,Editplus太轻量级了)

另外我发现了一个办法,就是利用Wordpress提供的文件编辑器。这个办法不受限制,不需要去下载专门的编辑器,毕竟大家都在用Wordpress嘛。先在ftp里把要编辑的文件的写入权限打开,然后进入Wordpress后台->管理->文件编辑器,输入要编辑文件的路径,点编辑文件。在显示出来的编辑界面中,你是看不到开头的那三个字符的,香港虚拟主机,不过没关系,把光标定位在整个文件的第一个字符前,按一下Backspace键。OK了,点更新文件吧,在ftp里刷新一下,可以看到文件小了3字节,大功告成。

最后说一下,这是个大问题,所有要自己写插件的,编辑别人的插件自己用的,需要修改模版的(这条估计每个人都需要吧),最好了解一下上面的知识,免得出现问题时不知所措。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Que sont les objets dom et bom ? Que sont les objets dom et bom ? Nov 13, 2023 am 10:52 AM

Il existe 5 objets DOM dont « document », « élément », « nœud », « événement » et « fenêtre » 2. « fenêtre », « navigateur », « emplacement » et « historique » et « écran » et 5 autres ; types d'objets de nomenclature.

Quelle est la différence entre bom et dom Quelle est la différence entre bom et dom Nov 13, 2023 pm 03:23 PM

BOM et DOM sont différents en termes de rôle et de fonction, de relation avec JavaScript, d'interdépendance, de compatibilité des différents navigateurs et de considérations de sécurité. Introduction détaillée : 1. Rôle et fonction. La fonction principale de BOM est de faire fonctionner la fenêtre du navigateur. Il fournit un accès et un contrôle directs à la fenêtre du navigateur, tandis que la fonction principale de DOM est de convertir le document Web en une arborescence d'objets. les développeurs doivent utiliser cette arborescence d'objets pour obtenir et modifier les éléments et le contenu de la page Web ; 2. Relation avec JavaScript, etc.

Explorez la signification et la fonction de PHP bom Explorez la signification et la fonction de PHP bom Mar 10, 2024 pm 10:45 PM

La signification et la fonction de PHPbom Dans la programmation PHP, BOM (ByteOrderMark) est une séquence de caractères spéciale utilisée pour identifier la méthode d'encodage et l'ordre des octets du fichier. La nomenclature est généralement insérée au début du fichier pour permettre à l'analyseur d'identifier l'encodage, notamment pour certains formats d'encodage qui ne commencent pas par l'encodage ASCII, comme UTF-8. BOM a différentes fonctions dans différents formats d'encodage. Ce qui suit explorera spécifiquement la signification et la fonction de BOM en PHP et le combinera avec des exemples de code à ajouter.

Que réalisent dom et bom ? Que réalisent dom et bom ? Nov 20, 2023 pm 02:28 PM

DOM permet un accès dynamique et des mises à jour au contenu des pages Web, tandis que BOM fournit des API pour interagir avec les fenêtres du navigateur, notamment contrôler le comportement du navigateur et obtenir des informations sur le navigateur et l'environnement utilisateur. DOM est principalement utilisé pour exploiter le contenu des pages Web. faire fonctionner les fenêtres du navigateur et interagir avec les navigateurs. Les deux constituent ensemble une base importante dans le développement frontal Web, fournissant aux développeurs des méthodes riches pour contrôler et exploiter les pages Web et les navigateurs afin d'obtenir une forte interactivité et des applications Web avec une bonne expérience utilisateur.

Comment supprimer bom du code php Comment supprimer bom du code php Oct 20, 2022 am 09:29 AM

Méthodes pour supprimer la BOM du code PHP : 1. Utilisez la méthode "function clearbom($contents){...}" pour supprimer l'en-tête de la BOM dans le texte ; 2. Utilisez la "function checkBOM ($filename) {... }" pour détecter et supprimer l'en-tête de nomenclature ; 3. Utilisez la méthode "function SearchBOM($string) {...}" pour rechercher si le fichier actuel a une nomenclature et la supprimer.

Quels modèles sont bom et dom ? Quels modèles sont bom et dom ? Nov 13, 2023 pm 05:08 PM

BOM est le modèle objet du navigateur et DOM est le modèle objet du document. BOM est un modèle utilisé pour décrire les fenêtres du navigateur et divers objets fournis par le navigateur. Il s'agit du composant principal du navigateur. BOM peut accéder et faire fonctionner des objets tels que les fenêtres et les cadres du navigateur. DOM fournit un ensemble d'API qui permettent aux développeurs d'accéder et de manipuler des éléments et des attributs dans des documents via des langages de script. Ses concepts de base incluent les nœuds, les éléments, les attributs, le texte, etc. Le nœud racine de l'arborescence DOM est l'objet document, à travers lequel. vous pouvez accéder à l'intégralité du contenu du document.

Quelle est la différence entre la nomenclature frontale et le DOM ? Quelle est la différence entre la nomenclature frontale et le DOM ? Nov 13, 2023 pm 02:36 PM

Les différences sont : 1. Différentes significations, BOM fait référence au modèle objet du navigateur et DOM fait référence au modèle objet du document ; 2. Différentes structures, BOM est centré sur la fenêtre du navigateur et les éléments du document DOM sont représentés sous forme de nœuds ; et disposé en forme d'arborescence. La structure est organisée ; 3. Les méthodes d'interaction sont différentes avec JS via l'objet Window, et DOM interagit via l'imbrication et les références entre les objets. pour l'interaction entre la fenêtre du navigateur et le navigateur, DOM est utilisé pour le fonctionnement et l'interaction du contenu du document. 5. Différentes tendances de développement, etc.

La définition du bom PHP et ses scénarios d'application La définition du bom PHP et ses scénarios d'application Mar 09, 2024 pm 09:36 PM

La définition de PHPBOM et de ses scénarios d'application BOM (ByteOrderMark), qui est la marque d'ordre des octets, est une séquence de caractères spéciale utilisée pour marquer le format d'encodage du texte. Dans le développement PHP, BOM est généralement utilisé pour résoudre certains problèmes de codage spécifiques. Dans certains cas, si BOM n'est pas géré correctement, la page peut afficher des caractères tronqués ou d'autres problèmes. Cet article présentera en détail la définition de PHPBOM et ses scénarios d'application, et joindra des exemples de code spécifiques pour donner aux lecteurs une meilleure compréhension. 1. PH

See all articles