因为编码问题打搅大家真是不好意思。
环境:
Windows10
Apache/2.4.18 (Win32)
Laravel 5.1
PHP/7.0.0
5.7.10-log - MySQL Community Server (GPL)
服务器字符集: UTF-8 Unicode (utf8)
我的数据库和表是 UTF8 编码,
我的代码也使用 UTF8 编码
代码使用了 Laravel 作为框架,在 Laravel 的框架中,
……\vendor\laravel\framework\src\Illuminate\Database\Connection.php
使用了这么一段代码
如图中红色圈处所示,我加了一个 var_dump()来显示即将存储的数据,打印得到的是
_
出问题的地方就在图中的那段 地址 处,此时地址为 D:\MusicBase\xxx 纯中文的歌曲 1.mp3 。
在执行完以后,数据库中出现的情况是这样子的
如果将文件名字全部改为中文, 如 D:\MusicBase\纯中文的歌曲 1.mp3 ,则变为
感觉像是字符串中 从中文开始以后全部被截断。
自己在搜索引擎中搜索之后,有人提示在执行 insert 之前先执行 “ set names utf8 ”,我照做之后没有任何改变。
我突发奇想,将该命令改为 “ set names gbk ”,结果却成功存入数据库,如图
这到底是为什么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.