当你有几千万行数据,N多个文件,需要导入mysql对应表的时候,可以试试这样做 1.假设数据表只有id和string两个字段,其中string可以做一个unique索引,避免重复 2.先建立好这些文件,用sed过滤一下特殊字符,用uniq排重一下, 3.用sed在行首插入一个”;”,这是为了区分不同字段的 4.设定mysql链接方式为socket,本机不需要密码 5.用文本编辑器批量写出以下命令 mysql -uroot -e “load data local infile ‘/path/to/your/file/1’ into table tablename1 files terminated by ‘;’” databasename mysql -uroot -e “load data local infile ‘/path/to/your/file/2’ into table tablename2 files terminated by ‘;’” databasename … 6.将上面的命令拷贝到terminal执行

总之就是用正则替换,察看utf-8编码范围

其中cjk是chinese japan korean的意思,其中ideographs是“象形文字”的意思

因此我就取其中u4E00 - u9FFF 这个范围(CJK unified ideographs: Han characters used in China, Japan, Korea, Taiwan, and Vietnam)

ruby的代码这样写

puts line.gsub(/[^\u4E00-\u9FFF]/,'')

注意如果还需要保留英文和数字,记得排除掉:

puts line.gsub(/[^\w0-9\u4E00-\u9FFF]/,'')

其他语言也差不多吧

完整的编码范围描述:

u0000 - u1FFF,Alphabets
u0020 - u007F,Basic Latin
u0080 - u00FF,Latin-1 supplement
u0100 - u017F,Latin extended-A
u0180 - u024F,Latin extended-B
u0250 - u02AF,IPA extensions
u02B0 - u02FF,Spacing modifier letters
u0300 - u036F,Combining diacritical marks
u0370 - u03FF,Greek
u0400 - u04FF,Cyrillic
u0530 - u058F,Armenian
u0590 - u05FF,Hebrew
u0600 - u06FF,Arabic
u0900 - u097F,Devanagari
u0980 - u09FF,Bengali
u0A00 - u0A7F,Gurmukhi
u0A80 - u0AFF,Gujarati
u0B00 - u0B7F,Oriya
u0B80 - u0BFF,Tamil
u0C00 - u0C7F,Telugu
u0C80 - u0CFF,Kannada
u0D00 - u0D7F,Malayalam
u0E00 - u0E7F,Thai
u0E80 - u0EFF,Lao
u0F00 - u0FBF,Tibetan
u10A0 - u10FF,Georgian
u1100 - u11FF,Hangul Jamo
u1E00 - u1EFF,Latin extended additional
u1F00 - u1FFF,Greek extended
u2000 - u2FFF,Symbols and punctuation
u2000 - u206F,General punctuation
u2070 - u209F,Superscripts and subscripts
u20A0 - u20CF,Currency symbols
u20D0 - u20FF,Combining diacritical marks for symbols
u2100 - u214F,Letterlike symbols
u2150 - u218F,Number forms
u2190 - u21FF,Arrows
u2200 - u22FF,Mathematical operators
u2300 - u23FF,Miscellaneous technical
u2400 - u243F,Control pictures
u2440 - u245F,Optical character recognition
u2460 - u24FF,Enclosed alphanumerics
u2500 - u257F,Box drawing
u2580 - u259F,Block elements
u25A0 - u25FF,Geometric shapes
u2600 - u26FF,Miscellaneous symbols
u2700 - u27BF,Dingbats
u3000 - u33FF,CJK auxiliary
u3000 - u303F,CJK symbols and punctuation
u3040 - u309F,Hiragana
u30A0 - u30FF,Katakana
u3100 - u312F,Bopomofo
u3130 - u318F,Hangul compatibility Jamo
u3190 - u319F,Kanbun
u3200 - u32FF,Enclosed CJK letters and months
u3300 - u33FF,CJK compatibility
u4E00 - u9FFF,CJK unified ideographs: Han characters used in China, Japan, Korea, Taiwan, and Vietnam
uAC00 - uD7A3,Hangul syllables
uD800 - uDFFF,Surrogates
uD800 - uDB7F,High surrogates
uDB80 - uDBFF,High private use surrogates
uDC00 - uDFFF,Low surrogates
uE000 - uF8FF,Private use
uF900 - uFFFF,Miscellaneous
uF900 - uFAFF,CJK compatibility ideographs
uFB00 - uFB4F,Alphabetic presentation forms
uFB50 - uFDFF,Arabic presentation forms-A
uFE20 - uFE2F,Combing half marks
uFE30 - uFE4F,CJK compatibility forms
uFE50 - uFE6F,Small form variants
uFE70 - uFEFE,Arabic presentation forms-B
uFF00 - uFFEF,Halfwidth and fullwidth forms
uFFF0 - uFFFF,Special

西部牛仔题材。鼠标一直拖到右边就可以了。看完一节在右侧点鼠标。好像可以改情节。 http://www.nevermindthebullets.com/strip.html#1-1

输入你家地址,它会自动生成MV http://www.thewildernessdowntown.com/

HTML5的模拟真实自然景观的网站 http://www.effectgames.com/demos/canvascycle/

麻痹的,为了这一个问题搞了一个礼拜才算明白 utf8编码一般有两种表示方法,u1234或者x12x34x56

参考 http://en.wikipedia.org/wiki/Utf-8 utf8是变长字符,可能是1个字节到6个字节,比如 01111111 11011111 10111111 11101111 10111111 10111111 分别是3个字符

发明者用一个很变态但很聪明的办法识别这个字符用了几个字节,0开头则是1个字节,110开头则是2个字节,1110开头则是3个字节,以此类推。另外,当使用2-6个字节时,第2-6个字节以10开头(等有空画图说明)。姑且把110,1110和2-6字节开头的10这种东西叫做分隔符吧,utf-8编码的二进制数中,将这写分隔符删掉,重新组成的数字就是uFFFF这种表示方法了。

因此11001111 10101101 可以切成4段(1100 1111 1010 1101)用十六进制表示为xCFxAD

11001111 10101101删掉变成01111 101101 整理成二进制变成 011 11101101 变成十六进制是 u03ED

也就是说xCFxAD和u03ED是一个字符

以上均为猜测,希望是对的

附16进制和4个连续2进制位的对应表 HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F BINARY 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

附utf-8官方定义 http://tools.ietf.org/html/rfc3629

经过上次的研究,郁闷的碰上了sed的一个bug, UTF8字符 9FA5~9FFF 在sed里做正则替换会报告 sed: -e expression #1, char 31: Invalid collation character 那么折中的办法就是: sed ‘s/[xE4xB8x80-xE9xBExA5]//g’ filename>newfilename

也就是说9FA5~9FFF这些中文是无法用sed替换的,希望高人指点