问题描述:
将以下文本保存为一个excel文件,中文显示有问题,但如果去掉标记为红色的部分,一切显示正常:
将以下文本保存为一个excel文件,中文显示有问题,但如果去掉标记为红色的部分,一切显示正常:
<div>
<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">
<tr>
<th scope="col">分类名</th><th scope="col">分类编码</th>
</tr><tr>
<td>按供应商属性分</td><td> 03</td>
</tr><tr>
<td>长期供应商</td><td> 0301</td>
</tr><tr>
<td>备选供应商</td><td> 0302</td>
</tr><tr>
<td>黑名单供应商</td><td> 0303</td>
</tr><tr>
<td>newNode</td><td> 0304</td>
</tr><tr>
<td>newNode</td><td> 0305</td>
</tr><tr>
<td>newNode</td><td> 04</td>
</tr><tr>
<td>newNode</td><td> 06</td>
</tr><tr>
<td>孙雷</td><td> 07</td>
</tr><tr>
<td>孙雷</td><td> 07</td>
</tr>
</table>
</div>
<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">
<tr>
<th scope="col">分类名</th><th scope="col">分类编码</th>
</tr><tr>
<td>按供应商属性分</td><td> 03</td>
</tr><tr>
<td>长期供应商</td><td> 0301</td>
</tr><tr>
<td>备选供应商</td><td> 0302</td>
</tr><tr>
<td>黑名单供应商</td><td> 0303</td>
</tr><tr>
<td>newNode</td><td> 0304</td>
</tr><tr>
<td>newNode</td><td> 0305</td>
</tr><tr>
<td>newNode</td><td> 04</td>
</tr><tr>
<td>newNode</td><td> 06</td>
</tr><tr>
<td>孙雷</td><td> 07</td>
</tr><tr>
<td>孙雷</td><td> 07</td>
</tr>
</table>
</div>
如果在文件的开头部分加上<meta http-equiv="Content-Type" content="text/html; charset=gb2312">则不论有无红色部分均能正常显示。
自己当时觉得很奇怪,但并没有想起来按照utf-8编码来保存那个excel文档。下面是请教了一个同事之后得出的一点结论:
估计是 excel 内部有一个“自动识别编码”的功能
1、当内容比较少时识别为 ansi,而中文内容过多时发现应该是 gb2312 的,但文件本身保存是按照 ansi 存的,按照 gb2312 解码出错
2、加上文件头时 excel 直接按照 gb2312 识别,出错而专为 ansi 读取
3、如果文件直接保存为 utf-8,测试不管有没有“孙雷”都没有问题
自己当时觉得很奇怪,但并没有想起来按照utf-8编码来保存那个excel文档。下面是请教了一个同事之后得出的一点结论:
估计是 excel 内部有一个“自动识别编码”的功能
1、当内容比较少时识别为 ansi,而中文内容过多时发现应该是 gb2312 的,但文件本身保存是按照 ansi 存的,按照 gb2312 解码出错
2、加上文件头时 excel 直接按照 gb2312 识别,出错而专为 ansi 读取
3、如果文件直接保存为 utf-8,测试不管有没有“孙雷”都没有问题