其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了.
这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM.
什么是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来标记文本文件的编码方式的。
那么如何在PHP中输出BOM呢?
在所有内容输出之前
print(chr(0xEF).chr(0xBB).chr(0xBF));
原文地址: http://foolbird.net/1517.html
上一篇文章里介绍了symfony的cheat sheet,但官方的下载地址貌似被墙,所以我也没有下载到全部的cheat sheet,不过还好bobhero那里有,虽然是1.0的,但很多内容依然很有用。
 symfony directory structure and CLI
|
 symfony helpers javascript and AJAX
|
 symfony helpers forms
|
 symfony views part1
|
 symfony views part2
|
 symfony model part1
|
 symfony model part2
|
 symfony model criteria criterionrs
|
 symfony server validation
|
 symfony lime
|
 symfony orm
|
bobhero就喜欢搞一些稀奇古怪的东西,800块的古董式键盘买了两个外加一个超级怪异的轨迹球鼠标,智能手机买了两个一个打电话一个玩日历,Arch Linux装了Awesome然后接了两个显示器。早在两年之前,我刚来公司的时候,就对他的这些卡片很感兴趣。

这个东西的英文名叫cheat sheet,找了很久也没有找到一个合适的中文名,不过我觉得叫备忘卡很合适。从以往的工作上来看,cheatsheet的确帮了不少忙,最关键是省了翻手册的时间,网上有很多的cheat sheet,打印下来,塑封,然后放在电脑旁,下面是来自Added Bytes的cheat sheets。
请访问 http://www.addedbytes.com/cheat-sheets/获取更多的CheatSheets.
注意:打印cheatsheet最好打印pdf版本的,图片格式的清晰度可能不是很好。忘了提醒大家了,塑封的时候可以把两张塑封到一起,比如PHP(V1)和PHP(V2)可以塑封个反正面。
下面这些是symfony官方提供的cheat sheets,貌似是1.0的,不过或多或少还有些用处。
请访问http://trac.symfony-project.org/wiki/CheatSheets来获取更多的symfony cheat sheets。下载链接我这里访问不了,不知道是删掉了还是被墙了,有新的发现我会再发出来。
http://www.addedbytes.com/cheat-sheets/php-cheat-sheet/
archlinux 安装 LAMP环境
archlinux 据说是很牛的系统 试了以后 的确很牛,牛到我累了好长时间也不能成功驾驭
不过工作重要 还是先说说LAMP环境如何来做吧。
archlinux 有一个传说中很牛的 类似 apt-get 的东西 叫 pacman
用命令
pacman -S apache mysql php
就可以直接把 apache mysql php 基本安装完成 我不确定顺序是否有影响 但是我建议大家如果想事少一点还是按这个顺序来吧
不知道从什么时候开始 php有一个openbase_dir 的变量 这个变量标识哪些目录可以用来存放 php文件 即 document root 一定要在openbase_dir 里,否则不会执行
而且 archlinux 的默认的document root 是 /srv/html 这个目录默认没有 而且当安装apache的安装后 我习惯的测了一下 ,这个目录不存在,会让apache 启动失败,所以我改成了/var/www 结果 php 放在/var/www下时 ,由于不在 openbase_dir里 所以不能执行 而且不报任何错误(由于php.ini的设置)所以就会出现 要么不解释 php文件 ,解释的时候 什么也没有 就是一片空白 一点错误也不报。 最难受的是 当GOOGLE archlinux lamp 的时候 一点也没有文章 提及这一现像,也没有解决方案 ,让我弄了好长时间才发现解决办法 。
解决办法就是 在php.ini 里 修改openbase_dir 或是 对应的不要修改 把文件直接放到/srv/html里
mysql 也是用得相当吃力 命令行下可以很好的进入 但是phpmyadmin就不可以 提示 连接被拒 也想过很多办法 但是未果 。后来发现不知道什么时候,或是哪条设置让 phpmyadmin不能用root 没有密码的情况下 连接 到mysql 没有办法 只好强行新建一个用户 给出所有权限。还有一点 现在MYSQL聪明了,在 skip-grant-tables时不可以对用户进行操作,这样是安全了很多,也让忘了密码的时候没有办法 进行找回
OK 只要注意以上两点基本上LAMP环境没有问题了