php读取csv文件后,uft8 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字节,大功告成。
最后说一下,这是个大问题,所有要自己写插件的,编辑别人的插件自己用的,需要修改模版的(这条估计每个人都需要吧),最好了解一下上面的知识,免得出现问题时不知所措。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











"문서", "요소", "노드", "이벤트" 및 "창"을 포함한 5개의 DOM 개체가 있습니다. 2. "창", "네비게이터", "위치" 및 "역사" 및 "화면" 및 기타 5개; BOM 객체의 유형.

BOM과 DOM은 역할과 기능, JavaScript와의 관계, 상호의존성, 다양한 브라우저의 호환성, 보안 고려사항 측면에서 다릅니다. 세부 소개: 1. 역할 및 기능 BOM의 주요 기능은 브라우저 창에 대한 직접 액세스 및 제어를 제공하는 반면, DOM의 주요 기능은 웹 문서를 개체 트리로 변환하는 것입니다. 개발자는 이 개체 트리를 사용하여 웹 페이지의 요소와 콘텐츠를 얻고 수정합니다. 2. JavaScript와의 관계

PHPbom의 의미와 기능 PHP 프로그래밍에서 BOM(ByteOrderMark)은 파일의 인코딩 방법과 바이트 순서를 식별하는 데 사용되는 특수 문자 시퀀스입니다. BOM은 일반적으로 파서가 인코딩을 식별할 수 있도록 파일 시작 부분에 삽입됩니다. 특히 UTF-8과 같이 ASCII 인코딩으로 시작하지 않는 일부 인코딩 형식의 경우 더욱 그렇습니다. BOM은 다양한 인코딩 형식으로 다양한 기능을 가지고 있습니다. 다음에서는 PHP에서 BOM의 의미와 기능을 구체적으로 살펴보고 이를 코드 예제와 결합하여 추가합니다.

DOM은 웹 페이지 콘텐츠에 대한 동적 액세스 및 업데이트를 가능하게 하며, BOM은 브라우저 동작 제어, 브라우저 및 사용자 환경에 대한 정보 획득 등 브라우저 창과 상호 작용하기 위한 API를 제공합니다. BOM은 주로 웹 페이지 콘텐츠를 운영하는 데 사용됩니다. 브라우저 창을 작동하고 브라우저와 상호 작용합니다. 이 두 가지가 함께 웹 프런트 엔드 개발의 중요한 기반을 형성하여 개발자에게 웹 페이지와 브라우저를 제어하고 작동할 수 있는 풍부한 방법을 제공하여 우수한 사용자 경험을 갖춘 웹 애플리케이션과 강력한 상호 작용을 달성합니다.

PHP 코드에서 BOM을 제거하는 방법: 1. "function clearbom($contents){...}" 방법을 사용하여 텍스트에서 BOM 헤더를 제거합니다. 2. "function checkBOM ($filename) {... }" 메소드를 사용하여 BOM 헤더를 감지하고 제거합니다. 3. "function SearchBOM($string) {...}" 메소드를 사용하여 현재 파일에 BOM이 있는지 검색하고 제거합니다.

BOM은 브라우저 개체 모델이고 DOM은 문서 개체 모델입니다. BOM은 브라우저 창과 브라우저가 제공하는 다양한 객체를 설명하는 데 사용되는 모델입니다. BOM은 브라우저 창, 프레임 등의 객체에 액세스하고 작동할 수 있습니다. DOM은 개발자가 스크립팅 언어를 통해 문서의 요소와 속성에 액세스하고 조작할 수 있도록 하는 API 세트를 제공합니다. DOM의 핵심 개념에는 노드, 요소, 속성, 텍스트 등이 포함됩니다. DOM 트리의 루트 노드는 문서 객체입니다. 전체 문서의 내용에 접근할 수 있습니다.

PHPBOM 및 해당 애플리케이션 시나리오의 정의 바이트 순서 표시인 BOM(ByteOrderMark)은 텍스트 인코딩 형식을 표시하는 데 사용되는 특수 문자 시퀀스입니다. PHP 개발에서 BOM은 일반적으로 특정 코딩 문제를 해결하는 데 사용됩니다. 경우에 따라 BOM이 올바르게 처리되지 않으면 페이지에 잘못된 문자가 표시되거나 기타 문제가 발생할 수 있습니다. 이 글에서는 PHPBOM의 정의와 적용 시나리오를 자세히 소개하고 독자의 이해를 돕기 위해 특정 코드 예제를 첨부합니다. 1. PH

차이점은 다음과 같습니다. 1. BOM은 브라우저 개체 모델을 참조하고 DOM은 문서 개체 모델을 참조합니다. 2. BOM은 브라우저 창 중앙에 위치하며 DOM 문서의 요소는 노드로 표시됩니다. 구조가 구성되어 있습니다. 3. 상호 작용 방법이 다르며, BOM은 Window 개체를 통해 상호 작용하고, DOM은 개체 간 중첩 및 참조를 통해 상호 작용합니다. 4. 응용 프로그램 범위가 다르며, BOM이 사용됩니다. 브라우저 창과 브라우저 간의 상호 작용을 위해 DOM을 사용하여 문서 내용의 작업 및 상호 작용을 수행합니다. 5. 다양한 개발 추세 등
