解决mysql命令行的字符编码问题

mysql命令行的字符编码问题是很常见的,也是比较麻烦的问题,但其实解决的方法比较简单,只需要知道哪些地方需要设置编码,并把这些编码设置成统一的就行了,比如:在使用mysql的命令行工具时,就需要设置命令行工具的字符编码与数据库的编码保持一致。

查看和设置数据库的字符编码

首先需要知道数据库的编码是怎么样的,可以使用下的命令,效果如下图:

show variables like ’character_set_%’;

查看数据库的编码
查看数据库的编码

除了charaacter_set_filesystem以外,其他的最好保持一致。可以看到我的数据库的字符编码设置都是utf8的。

这里的设置正确以后,就需要保证客户端的编码和数据库的编码一致,这样客户端才能正常显示数据库中的中文数据,数据库才能正确的识别客户端发来的带有中文的查询语句。

如果你的编码设置不一致,请使用类似下面的语句来设置编码:

set character_set_client=gb2312; // 客户端编码方式
set character_set_connection= gb2312; // 建立连接使用的编码
set character_set_database= gb2312; // 数据库的编码
set character_set_results= gb2312; // 结果集的编码
set character_set_server= gb2312; // 数据库服务器的编码

下面图文解释如何设置命令行工具的字符编码:

secureCRT的字符编码设置

在一个连接上右键,选择“属性”,如下图设置编码:

 

设置secureCRT的字符编码
设置secureCRT的字符编码

xshell的字符编码设置

如果你使用的是xshell作为你的命令行工具,那么你可以这样设置,在一个会话上,右键点击“属性”,然后按照如下设置你数据库对应的字符编码即可,我的数据库是用utf8,所以我设置了utf8:

 

xshell的字符编码设置
xshell的字符编码设置

Reference

只要工具用得好,没有效率提不高

notepad++就像瑞士军刀,简单好用,功能多
notepad++就像瑞士军刀,简单好用,功能多

只要工具用得好,没有效率提不高。现在工具一大堆,各有所用,但是按照2/8原则,大家其实大多时候只用到了其中的20%的功能,如果能多用几个功能,同时结合多个工具一起配置,则能达到1+1>2的效果。

昨天碰到一个事,一个同学需要统计最近一段时间的团队经费最后的余额,由于当初记录每笔支出和收入的时候,只用记事本随便记了一下时间、金额以及少许备注,大致有一点格式:

面对这些记录你想统计最后余额,会用什么办法?可能大部分人会老老实实的一个个的加减吧。

其实日常比较简单的统计软件比如excel,但是excel需要比较规整的格式,上面的这个数据就不能直接复制到excel来求和的。不过上面的数据还是有规律可循的,比如所有金额前面都有冒号;所有金额后面要么是空格,要么是元字;支出和收入有区分。这样一来就可以巧用notepad++的替换功能来简单的编辑一下,让其符合excel的要求。操作如下:

1. 把金额数字区分出来,使用notepad++的替换功能,把所有的”:”全部替换成“:\t\t”,然后把所有的单一空格替换成“\t\t”,这样做主要是为了把我想要的金额提取出来,注意替换时要选择“扩展”(后续的替换功能都需要选中这一项),如下图所示:

巧用notepad++的替换功能
巧用notepad++的替换功能

替换后效果如下:

2. 由于支出的金额在统计时应该用负数表示,所以需要把支出的金额前面添加负号,操作为:把“支出:\t\t”替换为“   :\t\t-”,这样就变成了下面的样子:

3. 使用notepad++一个很实用的列选择功能,来把金额所在列抠出来,即按住ALT键后,选择金额这一列即可,然后复制到另一个新打开的notepad++标签中,继续编辑,看到的效果如下:(当然其中有一点不太规整的地方可以手动调整一下,比如,里面有一行中有两个金额相加,可以调整为两行)

4. 现在的数据除了元,其他都是金额了,现在需要把元子去掉,把多余的换行也去掉,操作如下:把“元”替换为空字符串“”,然后把连续的两个换行“\r\n\r\n”换成一个换行”\r\n”(如果一次换行不能达到效果,就再替换一次)。得到如下的效果:

5. 现在数据,就很清晰了,这个数据,就可以直接粘贴到excel里面,使用其各种统计功能了,比如:求和。

从这个例子中可以看到,只要原始数据本身有规律,基本都可以使用notepad++的替换和列选择功能来达到抠数据的目的,甚至可以达到一些更复杂的目的。若要写程序恐怕不是一会儿的事吧。

一点心得,我经常用替换和列选择功能来做一些数据量不太大的文本抽取,有时碰到的情况是,需要把一行有规律的字符串中的某些字段抠出来,常用的做法是先把字段前面的标记替换成“\r\n\t\t\t”,然后把字段后面的标记替换成“\t\t\t”,这样就又可以使用列选择功能直接抠出这一列字段了。另外有时间字段前后的标记不统一,这时候就可以考虑更高级的“正则表达式”替换功能。巧用notepad++事半功倍,当然notepad++有这些有意思的功能,相信很多其他的编辑器也有类似的功能可以用,在此抛砖引玉。。。

自定义eclipse快捷键

大家有木有发现,尽管eclipse的快捷键很多,但是仍然有很多常用操作没有快捷键,比如:跳过所有的断点、删除所有的断点等。但是后来才发现其实eclipse有很多操作可以有快捷键,但是默认没有提供,我们可以通过自定义eclipse快捷键的方式来满足自己的高效coding和debug的需求。

自定义快捷键意味着,可以添加可以添加的快捷键,同时也可以修改快捷键(如果你对某快捷键不爽的话)。

自定义eclipse快捷键的步骤

下面介绍下eclipse快捷键的配置方法,如下图所示:

自定义eclipse快捷键
自定义eclipse快捷键

在Windows–>Perferences–>General–>Keys里面可以设置所有eclipse的快捷键。打开可以看到只是部分的功能有快捷键,还有不少的功能没有快捷键,这些快捷键都可以自定义,比如要设置ctrl+shift+1为跳过所有断点,可以先在命令过滤文本框里面输入想要设置的命令或者操作的英文名称(这个需要意会了,比如调试相关的命令,可以输入“breakpoint”,就能找到,如果实在不知道叫啥,就拖动滚动条一个个的看吧),跳过所有断点肯定是和breakpoint有关,所以输入breakpoint,可以看到列表里面有了所有和断点相关的命令,选择“Skip All Breakpoint”,然后在“Binding”里面按下ctrl+shift+1,再在“When”里面选择“In Windows”即可。

快捷键的上下文(Context)

其中“When”是告诉你,你设置的快捷键的会在什么场景下可用,或者说上下文是什么,In windows表示所有窗口,该快捷键的命令都会执行。这个上下文的还有个继承的潜规则:

  • In Dialogs and Windows
  • In Windows (extends In Dialogs and Windows)
  • In Dialogs (extends In Dialogs and Windows)
  • Editing Text (extends In Windows)
  • Editing Java Source (extends Editing Text)
  • Debugging (extends In Windows)
  • Debugging Java (extends Debugging)

Schema

从上面的图片中可以看到快捷键设置中可以选择schema,默认的schema是Default,其实eclipse自带了emacs版的快捷键,喜欢emacs的同学可以使用这个schema。其中也有个潜规则,就是emacs schema继承了Default schema的快捷键,如果emacs的快捷键在Default中也有,那么emacs的快捷键优先级高,会覆盖Default的快捷键。

个人经验

想必不少人设置快捷键的时候担心会和其他快捷键冲突,所以不知道应该把某命令设置成什么快捷键。其实这个问题还好说,因为“Conflict”里面会告诉你你当前设置的快捷键和那些其他快捷键在什么场景上下文下冲突。经过我自己的测试,我发现一些的9个组合基本没有被eclipse使用到,大家可以放心设置自己的快捷键。即ctrl+shift+1~9,,希望能对大家提供参考。

Reference

eclipse的帮助文档快捷键章节:Help–>Workbench User Guide–>Reference–>Perferences–>Keys

chrome开发者工具快捷键

按F12打开chrome的开发者工具,点一下开发者工具,然后按F1,就会弹出开发者工具快捷键指南,这个指南里面包含了所有的chrome开发者工具快捷键,这给平时前后端开发的同学带来的不少便捷。如下图:

chrome开发者工具快捷键
chrome开发者工具快捷键

打开chrome开发者工具的快捷键除了F12外,还有几个:

  • Ctrl+Shift+I  等同于F12,打开chrome开发者工具
  • Ctrl+Shift+J   打开chrome开发者工具,并把tab定位到Console上
  • Ctrl+Shift+C   打开chrome开发者工具,并把tab定位到Element上,同时把Element定位到鼠标光标所在页面的位置  (这个快捷键超有用)
  • Ctrl+Shift+Delete  打开清楚缓存的设置界面

当然还有一些操作chrome的常用快捷键,详见: