编程小贴士

给你的编程提供小点子


字符编码常识及问题解析

基本常识

1.位和字节

说起编码,我们必须从最基础的说起,位和字节(别觉得这个过于简单不值一说,我还真见过很多个不能区分这两者的程序员)。位(bit)是指计算机里存放的二进制值(0/1),而8个位组合成的“位串”称为一个字节,容易算出,8个位的组合有256( 28 )个组合方式,其取值范围是“00000000-11111111”,常用十六进制来表示。比如“01000001”就是一个字节,其对应的十六进制值为“0x41”。

而我们通常所讲的字符编码,就是指定义一套规则,将真实世界里的字母/字符与计算机的二进制序列进行相互转化。如我们可以针对上面的字节定义如下的转换规则:

 01000001(0x41)<-> 65 <-> 'A'

即用字位序“01000001”来表示字母’A’。

2.拉丁字符

拉丁字符是当今世界使用最广泛的符号了。通常我们说的拉丁字母,指的的是基础拉丁字母,即指常见的”ABCD“等26个英文字母,这些字母与英语中一些常见的符号(如数字,标点符号)称为基础拉丁字符,这些基础拉丁字符在使用英语的国家广为流行,当然在中国,也被用来当作汉语拼音使用。在欧洲其它一些非英语国家,为满足其语言需要,在基础拉丁字符的基础上,加上一些连字符,变音字符(如’Á’),形成了派生拉丁字母,其表示的字符范围在各种语言有所不同,而完整意义上的拉丁字符是指这些变体字符与基础拉丁字符的全集。是比基础拉丁字符集大很多的一个集合。

编码标准

前文提到,字符编码是一套规则。既然是规则,就必须有标准。下面我就仔细说说常见的字符编码标准。

1.拉丁编码

ASCII的全称是American Standard Code for Information Interchange(美国信息交换标准代码)。顾名思义,这是现代计算机的发明国美国人设计的标准,而美国是一个英语国家,他们设定的ASCII编码也只支持基础拉丁字符。ASCII的设计也很简单,用一个字节(8个位)来表示一个字符,并保证最高位的取值永远为’0’。即表示字符含义的位数为7位,不难算出其可表达字符数为27 =128个。这128个字符包括95个可打印的字符(涵盖了26个英文字母的大小写以及英文标点符号能)与33个控制字符(不可打印字符)。例如下表,就是几个简单的规则对应:

字符类型 字符 二进制 16进制 10进制
可打印字符 A 01000001 0x41 65
可打印字符 a 01100001 0x61 97
控制字符 \r 00001101 0x0D 13
控制字符 \n 00001010 0xA 10

前面说到了,ASCII是美国人设计的,只能支持基础拉丁字符,而当计算机发展到欧洲,欧洲其它不只是用的基础拉丁字符的国家(即用更大的派生拉丁字符集)该怎么办呢?

当然,最简单的办法就是将美国人没有用到的第8位也用上就好了,这样能表达的字符个数就达到了28 =256个,相比较原来,增长了一倍, 这个编码规则也常被称为EASCII。EASCII基本解决了整个西欧的字符编码问题。但是对于欧洲其它地方如北欧,东欧地区,256个字符还是不够用,如是出现了ISO 8859,为解决256个字符不够用的问题,ISO 8859采取的不再是单个独立的编码规则,而是由一系列的字符集(共15个)所组成,分别称为ISO 8859-n(n=1,2,3…11,13…16,没有12)。其每个字符集对应不同的语言,如ISO 8859-1对应西欧语言,ISO 8859-2对应中欧语言等。其中大家所熟悉的Latin-1就是ISO 8859-1的别名,它表示整个西欧的字符集范围需要注意的一点的是,ISO 8859-n与ASCII是兼容的,即其0000000(0x00)-01111111(0x7f)范围段与ASCII保持一致,而10000000(0x80)-11111111(0xFF)范围段被扩展用到不同的字符集。

2.中文编码

以上我们接触到的拉丁编码,都是单字节编码,即用一个字节来对应一个字符。但这一规则对于其它字符集更大的语言来说,并不适应,比如中文,而是出现 了用多个字节表示一个字符的编码规则。常见的中文GB2312(国家简体中文字符集)就是用两个字节来表示一个汉字(注意是表示一个汉字,对于拉丁字 母,GB2312还是是用一个字节来表示以兼容ASCII)。我们用下表来说明各中文编码之间的规则和兼容性。

tips1000_2014-09-18_13-05-07

对于中文编码,其规则实现上是很简单的,一般都是简单的字符查表即可,重要的是要注意其相互之间的兼容性问题。如如果选择BIG5字符集编码,就不能很好的兼容GB2312,当做繁转简时有可能导致个别字的冲突与不一致,但是GBK与GB2312之间就不存在这样的问题。

3.Unicode

以上可以看到,针对不同的语言采用不同的编码,有可能导致冲突与不兼容性,如果我们打开一份字节序文件,如果不知道其编码规则,就无法正确解析其语 义,这也是产生乱码的根本原因。有没有一种规则是全世界字符统一的呢?当然有,Unicode就是一种。为了能独立表示世界上所有的字符,Unicode 采用4个字节表示一个字符,这样理论上Unicode能表示的字符数就达到了231 = 2147483648 = 21 亿左右个字符,完全可以涵盖世界上一切语言所用的符号。我们以汉字”微信“两字举例说明:

微 <->  \u5fae   <->  00000000 00000000 01011111 10101110
信 <-> \u4fe1   <->  00000000 00000000 01001111 11100001

容易从上面的例子里看出,Unicode对所有的字符编码均需要四个字节,而这对于拉丁字母或汉字来说是浪费的,其前面三个或两个字节均是0,这对 信息存储来说是极大的浪费。另外一个问题就是,如何区分Unicode与其它编码这也是一个问题,比如计算机怎么知道四个字节表示一个Unicode中的 字符,还是分别表示四个ASCII的字符呢?

以上两个问题,困扰着Unicode,让Unicode的推广上一直面临着困难。直至UTF-8作为Unicode的一种实现后,部分问题得到解决,才得以完成推广使用。说到此,我们可以回答文章一开始提出的问题了,UTF-8是Unicode的一种实现方式,而Unicode是一个统一标准规范,Unicode的实现方式除了UTF-8还有其它的,比如UTF-16等。

话说当初大牛Ben Thomson吃饭时,在一张餐巾纸上,设计出了UTF-8,然后回到房间,实现了第一版的UTF-8。关于UTF-8的基本规则,其实简单来说就两条(来自阮一峰老师的总结):

规则1:对于单字节字符,字节的第一位为0,后7位为这个符号的Unicode码,所以对于拉丁字母,UTF-8与ASCII码是一致的。

规则2:对于n字节(n>1)的字符,第一个字节前n位都设为1,第n+1位为0,后面字节的前两位一律设为10,
剩下没有提及的位,全部为这个符号的Unicode编码。

通过,根据以上规则,可以建立一个Unicode取值范围与UTF-8字节序表示的对应关系,如下表,

tips1000_2014-09-18_13-04-30

举例来说,’微’的Unicode是’\u5fae’,二进制表示是”00000000 00000000 01011111 10101110“,其取值就位于’0000 0800-0000 FFFF’之间,所以其UTF-8编码为’11100101 10111110 10101110’ (加粗部分为固定编码内容)。

通过以上简单规则,UTF-8采取变字节的方式,解决了我们前文提到的关于Unicode的两大问题。同时,作为中文使用者需要注意的一点是Unicode(UTF-8)与GBK,GB2312这些汉字编码规则是完全不兼容的,也就是说这两者之间不能通过任何算法来进行转换,如需转换,一般通过GBK查表的方式来进行

常见问题及解答

1.windows Notepad中的编码ANSI保存选项,代表什么含义?

ANSI是windows的默认的编码方式,对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。所以,如果将一个UTF-8编码的文件,另存为ANSI的方式,对于中文部分会产生乱码

2.什么是UTF-8的BOM?

BOM的全称是Byte Order Mark,BOM是微软给UTF-8编码加上的,用于标识文件使用的是UTF-8编码,即在UTF-8编码的文件起始位置,加入三个字节“EE BB BF”。这是微软特有的,标准并不推荐包含BOM的方式。采用加BOM的UTF-8编码文件,对于一些只支持标准UTF-8编码的环境,可能导致问题。比 如,在Go语言编程中,对于包含BOM的代码文件,会导致编译出错。详细可见我的这篇文章。

3.为什么数据库Latin1字符集(单字节)可以存储中文呢?

其实不管需要使用几个字节来表示一个字符,但最小的存储单位都是字节,所以,只要能保证传输和存储的字节顺序不会乱即可。 作为数据库,只是作为存储的使用的话,只要能保证存储的顺序与写入的顺序一致,然后再按相同的字节顺序读出即可,翻译成语义字符的任务交给应用程序。比 如’微’的UTF-8编码是’0xE5 0xBE 0xAE’,那数据库也存储’0xE5 0xBE 0xAE’三个字节,其它应用按顺序从数据库读取,再按UTF-8编码进行展现。这当然是一个看似完美的方案,但是只要写入,存储,读取过程中岔出任何别 的编码,都可能导致乱码。

4.Mysql数据库中多个字符集变量(其它数据库其实也类似),它们之间分别是什么关系?

tips1000_2014-09-18_13-04-53

我们分别解释:

character_set_client:客户端来源的数据使用的字符集,用于客户端显式告诉客户端所发送的语句中的的字符编码。

character_set_connection:连接层的字符编码,mysql一般用character_set_connection将客户端的字符转换为连接层表示的字符。

character_set_results:查询结果从数据库读出后,将转换为character_set_results返回给前端。

而我们常见的解决乱码问题的操作:

mysql_query('SET NAMES GBK')

其相当于将以上三个字符集统一全部设置为GBK,这三者一致时,一般就解决了乱码问题。

character_set_database:当前选中数据库的默认字符集,如当create table时没有指定字符集,将默认选择该字符集。

character_set_database已经character_set_system,一般用于数据库系统内部的一些字符编码,处理数据乱码问题时,我们基本可以忽略。

5.什么情况下,表示信息丢失?

对于mysql数据库,我们可以通过hex(colname)函数(其它数据库也有类似的函数,一些文本文件编辑器也具有这个功能),查看实际存储的字节内容,如:

tips1000_2014-09-18_13-04-29

通过查看存储的字节序,我们可以从根本上了解存储的内容是什么编码了。而当发现存储的内容全部是’3F’时,就表明存储的内容由于编码问题,信息已经丢失了,无法再找回

之所以出现这种信息丢失的情况,一般是将不能相互转换的字符集之间做了转换,比如我们在前文说到,UTF-8只能一个个字节地变成Latin-1, 但是根本不能转换的,因为两者之间没有转换规则,Unicode的字符对应范围也根本不在Latin-1范围内,所以只能用’?(0x3F)’代替了。

总结:

本文从基础知识与实际中碰到的问题上,解析了字符编码相关内容。而之所以要从头介绍字符编码的基础知识,是为了更好的从原理上了解与解决日常碰到的 编码问题,只有从根本上了解了不同字符集的规则及其之间的关系与兼容性,才能更好的解决碰到的乱码问题,也能避免由于程序中不正确的编码转换导致的信息丢 失问题。

253 Responses to “ 字符编码常识及问题解析 ”

  1. i love pron说道:

    wuqZMv SEO Company Orange Company I think this internet site contains some really good info for everyone . The ground that a good man treads is hallowed. by Johann von Goethe.

  2. suba suba说道:

    oLQhOg Looking around I like to look around the online world, often I will go to Digg and follow thru

  3. Whispering Misty So sorry you can expect to miss the workshop!

  4. animal drawings说道:

    There are certainly a number of particulars like that to take into consideration. That may be a nice point to bring up.

  5. Lung Cleanse说道:

    Some truly good stuff on this internet website , I like it.

  6. Im obliged for the blog article.Really looking forward to read more.

  7. My Face Gifts说道:

    Thank you ever so for you article post.Much thanks again. Will read on

  8. Very informative post.Really thank you! Really Great.

  9. learn more说道:

    Really enjoyed this blog.Thanks Again. Will read on

  10. Oluwadamilare说道:

    The Silent Shard This will likely almost certainly be quite handy for some of your respective positions I decide to you should not only with my website but

  11. magnificent issues altogether, you just won a brand new reader. What might you suggest in regards to your publish that you just made a few days in the past? Any certain?

  12. Thanks again for the blog article.Really looking forward to read more. Will read on

  13. You should be a part of a contest for one of the best sites online.

  14. visit说道:

    plumbing can actually be a hardwork specially if you usually are not very skillfull in undertaking residence plumbing::

  15. W88说道:

    Wonderful work! That is the kind of information that should be

  16. This very blog is without a doubt interesting additionally amusing. I have discovered a lot of interesting advices out of it. I ad love to return every once in a while. Cheers!

  17. Thanks a lot for the blog article.Much thanks again. Awesome.

  18. Ep coc 250x250说道:

    Way cool! Some extremely valid points! I appreciate you writing this write-up and also the rest of the site is also very good.

  19. Very good blog.Really looking forward to read more.

  20. pre booked说道:

    Youth rock band Ranetki says thank you for such a wonderful blog..!

  21. Really appreciate you sharing this post.Thanks Again. Much obliged.

  22. gia sat thep说道:

    I truly appreciate this article.Thanks Again. Really Cool.

  23. Looking forward to reading more. Great blog article.Really looking forward to read more. Awesome.

  24. Simply a smiling visitor here to share the love (:, btw outstanding pattern. Make the most of your regrets. To regret deeply is to live afresh. by Henry David Thoreau.

  25. My spouse and I stumbled over here from a different page and thought I might as well check things out. I like what I see so i am just following you. Look forward to going over your web page again.

  26. Nice blog here! Also your web site loads up fast!

  27. Must share说道:

    out. I like what I see so now i am following you.

  28. Im no pro, but I consider you just crafted a very good point point. You certainly know what youre talking about, and I can really get behind that. Thanks for staying so upfront and so truthful.

  29. Clicking Here说道:

    Very good article post.Really looking forward to read more.

  30. Nwokolo说道:

    This awesome blog is really awesome and besides amusing. I have discovered helluva handy advices out of this amazing blog. I ad love to visit it every once in a while. Cheers!

  31. klm promo code说道:

    Way cool! Some extremely valid points! I appreciate you writing this write-up and the rest of the website is really good.

  32. Very informative article post.Really looking forward to read more. Keep writing.

  33. trash cans说道:

    Really informative blog.Really looking forward to read more. Cool.

  34. Jay-Z说道:

    Your style is really unique in comparison to other people I ave read stuff from. I appreciate you for posting when you have the opportunity, Guess I will just bookmark this page.

  35. Take a look for more Information on that topic

  36. It’а†s really a great and helpful piece of information. I’а†m satisfied that you just shared this useful information with us. Please stay us informed like this. Thanks for sharing.

  37. freight courier说道:

    Thank you for your blog post.Much thanks again. Fantastic.

  38. me tell you, you ave hit the nail on the head. The problem is

  39. Very nice info and right to the point. I don at know if this is in fact the best place to ask but do you people have any thoughts on where to get some professional writers? Thanks in advance

  40. you could have a great blog here! would you prefer to make some invite posts on my weblog?

  41. Vs model说道:

    This very blog is without a doubt interesting additionally amusing. I have discovered a lot of interesting advices out of it. I ad love to return every once in a while. Cheers!

  42. seo tips说道:

    There is evidently a bunch to realize about this. I consider you made various nice points in features also.

  43. fashion说道:

    Your style is very unique compared to other folks I have read stuff from. Many thanks for posting when you ave got the opportunity, Guess I will just book mark this web site.

  44. Hosting说道:

    I want to to thank you for this excellent read!! I certainly enjoyed every bit of it. I have got you book-marked to check out new stuff you post

  45. visit website说道:

    Your style is so unique in comparison to other people I ave read stuff from. I appreciate you for posting when you have the opportunity, Guess I all just bookmark this page.

  46. Im thankful for the blog post.Really looking forward to read more. Much obliged.

  47. We stumbled over here different website and thought I may as well check things out. I like what I see so i am just following you. Look forward to exploring your web page yet again.

  48. Crochet facil说道:

    I really liked your article post.Really thank you! Really Cool.

  49. You could definitely see your enthusiasm in the work you write. The world hopes for more passionate writers like you who aren at afraid to say how they believe. Always go after your heart.

  50. Really appreciate you sharing this blog post.Really looking forward to read more. Much obliged. ventolin

  51. red shoes说道:

    There is certainly a great deal to learn about this topic. I like all the points you have made.

  52. value说道:

    There as certainly a great deal to learn about this issue. I love all the points you made.

  53. more details说道:

    Really enjoyed this article. Keep writing.

  54. anal说道:

    It is in reality a great and helpful piece of information. I am glad that you just shared this helpful info with us. Please keep us informed like this. Thank you for sharing.

  55. Sensible stuff, I look forward to reading more.

  56. School news说道:

    Once open look for the line that says #LAST LINE аАа’аАТ‚б‚Т€Т ADD YOUR ENTRIES BEFORE THIS ONE аАа’аАТ‚б‚Т€Т DO NOT REMOVE

  57. What as up to every body, it as my first pay a quick visit of this web site; this web site

  58. Thanks so much for the blog.Really thank you! Much obliged.

  59. Thanks so much for the blog.Really thank you! Cool.

  60. Its hard to find good help I am constantnly proclaiming that its difficult to procure quality help, but here is

  61. some fastidious points here. Any way keep up wrinting.

  62. This web site certainly has all the info I wanted about

  63. Your style is unique compared to other folks I ave read stuff from. Thanks for posting when you have the opportunity, Guess I will just bookmark this web site.

  64. Way cool! Some extremely valid points! I appreciate you writing this post plus the rest of the site is also really good.

  65. This is my first time pay a quick visit at here and i am in fact happy to read everthing at alone place.

  66. I really liked your article post.Really looking forward to read more. Much obliged.

  67. You ave made some decent points there. I checked on the net to learn more about the issue and found most individuals will go along with your views on this website.

  68. tips说道:

    Im thankful for the blog post. Want more.

  69. Right now it sounds like WordPress is the best blogging platform available right now. (from what I ave read) Is that what you are using on your blog?

  70. Looking forward to reading more. Great article post.Thanks Again. Really Cool.

  71. It as really a nice as well as useful piece of information. I am glad that you shared this kind of useful information with us. Please retain us informed such as this. Thanks with regard to sharing.

  72. Thanks so much for the blog article.Really thank you! Really Cool.

  73. Im no pro, but I feel you just crafted an excellent point. You certainly understand what youre talking about, and I can really get behind that. Thanks for staying so upfront and so truthful.

  74. personal injury说道:

    Thanks-a-mundo for the blog article.Really looking forward to read more.

  75. I value the blog article.Much thanks again.

  76. Thank you ever so for you article. Will read on

  77. This is a topic that is near to my heart Thank you! Where are your contact details though?

  78. Review my homepage; burn fat while sleeping

  79. devotionals说道:

    Very interesting subject , regards for posting. Integrate what you believe into every single area of your life. by Meryl Streep.

  80. well defined说道:

    I think other site proprietors should take this website as an model, very clean and great user genial style and design, as well as the content. You are an expert in this topic!

  81. visit说道:

    Thanks so much for the article post.Really looking forward to read more. Awesome.

  82. Way cool! Some extremely valid points! I appreciate you writing this write-up plus the rest of the site is also very good.

  83. to learn more说道:

    You can definitely see your skills in the work you write. The world hopes for even more passionate writers like you who are not afraid to say how they believe. Always go after your heart.

  84. This info is priceless. Where can I find out more?

  85. see this website说道:

    This unique blog is without a doubt cool and informative. I have discovered many interesting advices out of this source. I ad love to return again soon. Thanks a lot!

  86. pretty helpful material, overall I feel this is worthy of a bookmark, thanks

  87. which blog platform are you using for this site? I am getting

  88. I value the blog post.Really looking forward to read more. Fantastic.

  89. We hope you will understand our position and look forward to your cooperation.

  90. I think this is a real great blog post.Really looking forward to read more. Cool.

  91. This is a topic that as close to my heart Best wishes! Exactly where are your contact details though?

  92. Usually I do not learn article on blogs, but I wish to say that this write-up very pressured me to take a look at and do so! Your writing style has been amazed me. Thank you, very nice article.

  93. Okey说道:

    Just wanna admit that this is very helpful , Thanks for taking your time to write this.

  94. miller electric说道:

    Pretty! This was an incredibly wonderful post. Many thanks for providing these details.

  95. post an ad说道:

    It as not that I want to replicate your web site, but I really like the style. Could you let me know which design are you using? Or was it especially designed?

  96. Well I definitely liked reading it. This article offered by you is very effective for accurate planning.

  97. go to see说道:

    Some truly select articles on this web site, saved to bookmarks.

  98. see more说道:

    Thanks for the post.Really thank you! Fantastic.

  99. I truly appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You have made my day! Thanks again

  100. click说道:

    Im obliged for the blog article.Thanks Again. Want more.

  101. Nelida说道:

    pretty helpful material, overall I believe this is well worth a bookmark, thanks

  102. to carry this out efficiently, appropriately and safely.

  103. Pretty nice post. I just found your web site and planned to say that i have really enjoyed browsing your blog posts

  104. dich vu ve sinh说道:

    when I have time I will be back to read much more, Please do keep up the superb jo.

  105. more info说道:

    I will be sure to bookmark your blog and will come back in the future.

  106. This awesome blog is no doubt educating and besides diverting. I have chosen a lot of useful stuff out of it. I ad love to go back over and over again. Thanks!

  107. wonderful issues altogether, you just received a logo new reader. What may you suggest in regards to your submit that you just made some days ago? Any positive?

  108. tampa seo说道:

    you possess an incredible weblog right here! would you like to make some invite posts in my weblog?

  109. Way cool! Some extremely valid points! I appreciate you writing this post and the rest of the site is also really good.

  110. other details说道:

    Vale Flash O PORTAL MUTIMDIA DO VALE DO PARABA

  111. check here说道:

    sleekness as well as classiness. An elegant ladies watch that

  112. good day说道:

    I think this is a real great blog article. Really Cool.

  113. Say, you got a nice blog.Much thanks again. Fantastic.

  114. It’а†s really a nice and helpful piece of info. I am happy that you just shared this helpful info with us. Please keep us up to date like this. Thank you for sharing.

  115. Say, you got a nice blog.Really looking forward to read more. Keep writing.

  116. Thanks-a-mundo for the article.Really thank you! Want more.

  117. Wedding说道:

    Well I definitely liked reading it. This subject offered by you is very constructive for good planning.

  118. Please forgive my bad English.I have been reading out many of your articles and i can state nice stuff. I will make sure to bookmark your blog.

  119. I truly like your site put up. Maintain publishing far more worthwhile info, we value it!

  120. Game Online说道:

    This page truly has all the information I wanted about this subject and didn at know who to ask.

  121. Canon 80d price说道:

    You made some nice points there. I looked on the internet for the subject and found most people will agree with your website.

  122. Remarkable! Its actually amazing paragraph, I have got much clear idea concerning from this article.

  123. Looking forward to reading more. Great article post.Thanks Again. Fantastic.

  124. check out说道:

    Wow, wonderful blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is wonderful, let alone the content!

  125. Muchos Gracias for your blog article.Really looking forward to read more. Will read on

  126. C_CP_I_12 guide说道:

    Normally I do not read post on blogs, but I wish to say that this write-up very forced me to try and do it! Your writing style has been surprised me. Thanks, very nice article.

  127. Im thankful for the blog.Really thank you! Keep writing.

  128. This is really interesting, You are a very skilled blogger. I ave joined your rss feed and look forward to seeking more of your great post. Also, I have shared your website in my social networks!

  129. Way cool! Some very valid points! I appreciate you writing this article and also the rest of the site is also very good.

  130. Barcode Scanner说道:

    Really appreciate you sharing this article post.Really thank you! Fantastic.

  131. The thing that All people Ought To Know Involving E commerce, Modify that E commerce in to a full-blown Goldmine

  132. bitcoin说道:

    Very good article! We are linking to this particularly great post on our website. Keep up the great writing.

  133. Really appreciate you sharing this blog post.Thanks Again. Really Great.

  134. visit website说道:

    Well I truly liked reading it. This tip offered by you is very effective for proper planning.

  135. Mobile Computer说道:

    Thanks for sharing this fine piece. Very inspiring! (as always, btw)

  136. see this说道:

    The Birch of the Shadow I feel there may be considered a few duplicates, but an exceedingly helpful list! I have tweeted this. Numerous thanks for sharing!

  137. Wow! This can be one particular of the most beneficial blogs We ave ever arrive across on this subject. Basically Excellent. I am also a specialist in this topic so I can understand your hard work.

  138. Very neat blog article.Really thank you! Keep writing.

  139. You have a good blog and I liked this post. I will be looking forward to your future posts. Keep up the good work.

  140. Very interesting info !Perfect just what I was searching for!

  141. mealcoupons说道:

    My brother recommended I may like this web site. He was entirely right. This put up truly made my day. You can not believe simply how a lot time I had spent for this information! Thank you!

  142. suba suba说道:

    osKFyP Usually I don at learn post on blogs, but I wish to say that this write-up very pressured me to take a look at and do it! Your writing taste has been surprised me. Thanks, quite nice post.

  143. domino qiu qiu说道:

    Many thanks an additional superb write-up. The site else might anyone obtain that types of facts in such an easy way of writing? I get a display in the future, and I am within the hunt for like info.

  144. chocopie说道:

    eNgnbN J aadmire cette photo neanmoins j aen ai deja entendu certains nouveaux de meilleures qualifications?

  145. There is certainly a lot to know about this subject. I like all of the points you made.

  146. Thank you ever so for you article. Cool.

  147. The sketch is tasteful, your authored subject matter stylish.

  148. Way cool! Some extremely valid points! I appreciate you writing this article and the rest of the site is also really good.

  149. Say, you got a nice article.Thanks Again. Want more.

  150. Muchos Gracias for your blog post.Really thank you! Cool.

  151. Right here is the right webpage for anybody who wishes to understand this topic.

  152. know more说道:

    Thank you ever so for you blog article. Fantastic.

  153. What web host are you the use of? Can I am getting your affiliate link for your host?

  154. Looking forward to reading more. Great blog post.Much thanks again. Awesome.

  155. bistro masa说道:

    Some really nice and useful information on this internet site, besides I think the style has got wonderful features.

  156. Tattoo Studio说道:

    Souls in the Waves Excellent Morning, I just stopped in to visit your site and assumed I would say I loved myself.

  157. You need to You need to indulge in a contest for just one of the best blogs online. I am going to recommend this web site!

  158. So happy to have located this submit.. Excellent thoughts you possess here.. yes, study is having to pay off. I appreciate you expressing your point of view..

  159. Major thanks for the article.Really looking forward to read more. Awesome.

  160. DMC5说道:

    The next time I read a blog, Hopefully it doesn’t fail me just as much as this one. I mean, I know it was my choice to read, nonetheless I genuinely believed you’d have something helpful to say. All I hear is a bunch of crying about something you could possibly fix if you weren’t too busy searching for attention.

  161. link vao 188bet说道:

    Im thankful for the blog.Really thank you! Really Great.

  162. Tremendous details thanks a lot for publishing. The truth is in all of the content on this blog you will find something to understand.

  163. xin visa canada说道:

    Very interesting subject , thankyou for posting.

  164. vue forums说道:

    These are in fact fantastic ideas in concerning blogging.

  165. Very good blog post. I definitely appreciate this website. Stick with it!

  166. porn说道:

    I was suggested this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my difficulty. You are incredible! Thanks!

  167. I’а†ve learn several just right stuff here. Certainly value bookmarking for revisiting. I wonder how much attempt you place to create this type of great informative site.

  168. Thanks, I ave recently been looking for info about this subject for a while and yours is the greatest I ave found out so far. However, what concerning the bottom line? Are you sure about the source?

  169. The Venus Factor说道:

    Really informative blog article. Will read on

  170. There is noticeably a lot to identify about this. I consider you made certain good points in features also.

  171. Its hard to find good help I am constantnly saying that its difficult to procure good help, but here is

  172. I think, that you are not right. I can defend the position. Write to me in PM.

  173. crypto说道:

    Thank you for your post.Really looking forward to read more. Great.

  174. Terrific work! This is the type of information that should be shared around the internet. Shame on Google for not positioning this post higher! Come on over and visit my web site. Thanks =)

  175. That is a good tip particularly to those new to the blogosphere. Simple but very precise info Thanks for sharing this one. A must read post!

  176. welding stands说道:

    Only a smiling visitor here to share the love (:, btw outstanding style.

  177. Chicago Escorts说道:

    Thanks for sharing, this is a fantastic blog post.Really thank you! Really Great.

  178. The Lost Ways说道:

    Scribbler, give me a student as record-book!)))

  179. Very good article. I am facing some of these issues as well..

  180. That is a very good tip particularly to those new to the blogosphere. Simple but very accurate info Many thanks for sharing this one. A must read post!

  181. I will right away grasp your rss as I can at in finding your email subscription hyperlink or newsletter service. Do you have any? Please allow me realize so that I may subscribe. Thanks.

  182. 먹튀검증说道:

    Im grateful for the blog article.Much thanks again.

  183. 먹튀폴리스说道:

    Im thankful for the blog.Really looking forward to read more. Awesome.

  184. There as definately a lot to find out about this subject. I like all the points you ave made.

  185. I really loved what you had to say, and more than that,

  186. Thanks for sharing, this is a fantastic article post.Much thanks again. Really Great.

  187. Thanks so much for the blog. Really Great.

  188. purchase mp3说道:

    Merely wanna comment that you have a very nice website , I like the design and style it really stands out.

  189. School说道:

    Some genuinely excellent information , Gladiolus I observed this.

  190. generic levitra说道:

    Some really nice and useful information on this internet site, likewise I conceive the pattern has got excellent features.

  191. viagra 50 mg说道:

    Really appreciate you sharing this article post.Much thanks again. Great.

  192. 릴 게임说道:

    There is definately a great deal to find out about this topic. I love all of the points you ave made.

  193. This very blog is really entertaining and also diverting. I have picked many interesting tips out of this amazing blog. I ad love to return every once in a while. Thanks a bunch!

  194. TSC说道:

    It as really a great and useful piece of information. I am glad that you shared this helpful info with us. Please keep us up to date like this. Thanks for sharing.

  195. Pretty! This was a really wonderful article. Thanks for providing this information.

  196. 먹튀검증소说道:

    Nice blog here! Also your website loads up fast! What host are you using? Can I get your affiliate link to your host? I wish my website loaded up as quickly as yours lol

  197. 바다 이야기说道:

    Keep up the excellent piece of work, I read few blog posts on this website and I conceive that your web site is really interesting and has got circles of great information.

  198. 다자바说道:

    I think this is a real great article.Really thank you! Cool.

  199. Nonetheless, I am definitely pleased I came across

  200. Wow! Thank you! I always wanted to write on my website something like that. Can I implement a portion of your post to my site?

  201. Regards for this post, I am a big big fan of this website would like to go on updated.

  202. this website说道:

    I think this is a real great article.Thanks Again. Keep writing.

  203. tips de ventas说道:

    Really clear website , appreciate it for this post.

  204. 먹튀 폴리스说道:

    Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, as well as the content!. Thanks For Your article about sex.

  205. I really liked your article.Thanks Again. Fantastic.

  206. Yay google is my world beater helped me to find this great internet site !.

  207. I value the post.Much thanks again. Keep writing.

  208. Looking forward to reading more. Great blog post.Much thanks again. Will read on

  209. Well I definitely enjoyed reading it. This post provided by you is very constructive for correct planning.

  210. 바다이야기说道:

    magnificent post, very informative. I wonder why the other specialists of this sector do not notice this. You must continue your writing. I am sure, you have a great readers a base already!

  211. Very nice post. I definitely appreciate this website. Keep writing!

  212. an1mal porn说道:

    Thanks for all of your work on this web site. My niece enjoys doing internet research and it’s obvious why. We all know all relating to the dynamic medium you present both interesting and useful items by means of this website and as well as boost participation from the others on this concern then our favorite princess is in fact discovering so much. Have fun with the rest of the new year. Your conducting a superb job.

  213. wow, awesome article post.Much thanks again. Much obliged.

  214. qua tang cao cap说道:

    Very educating story, saved your site for hopes to read more!

  215. This is my first time pay a quick visit at here and i am really impressed to read everthing at alone place.

  216. Outstanding work over again! Thumbs up=)

  217. Lee Solesbee说道:

    My husband and i got absolutely joyful that Raymond managed to finish up his web research by way of the ideas he obtained out of your blog. It is now and again perplexing to just be giving for free solutions that many other folks have been selling. And we all do know we have got the website owner to thank for this. All of the explanations you have made, the simple site navigation, the friendships your site aid to engender – it is mostly remarkable, and it’s aiding our son in addition to our family do think that theme is exciting, and that is pretty important. Thanks for the whole thing!

  218. Ingrid Lapsley说道:

    One can undertake all sorts of advised excursions with assorted limousine functions. Various offer great courses and many can take clients for just about any ride your bike over the investment banking area, or even for a vacation to new york. ???????

  219. Freeda Seabrooke说道:

    There is noticeably big money to know about this. I suppose you’ve made specific nice points in features also.

  220. Looking forward to reading more. Great post. Awesome.

  221. Sabina Rodin说道:

    Outstanding article it is without doubt. My father has been awaiting for this content.

  222. punto switcher说道:

    This is a great tip especially to those fresh to the blogosphere. Short but very accurate information Appreciate your sharing this one. A must read article!

  223. Thanks so much for the blog.Really looking forward to read more. Will read on

  224. My brother recommended I might like this web site. He was entirely right. This post truly made my day. You cann at imagine simply how much time I had spent for this info! Thanks!

  225. Sondra Brill说道:

    Loving the info on this site, you have done great job on the posts .

  226. Sydney Wackenhut说道:

    As a Newbie, I am always exploring online for articles that can be of assistance to me. Thank you

  227. This unique blog is really awesome and also diverting. I have discovered many useful things out of it. I ad love to visit it every once in a while. Thanks a lot!

  228. Way cool! Some very valid points! I appreciate you penning this write-up and also the rest of the site is very good.

  229. Ever considered adding more videos to the web sites to remain readers more entertained? I am talking about I just read over the actual yours therefore was quite good consider I’m i’ll get to a visible learner,I recently found that being more helpful well identify operate appears.

  230. 토토 사이트说道:

    pretty useful stuff, overall I imagine this is worth a bookmark, thanks

  231. 다자바说道:

    Informative and precise Its difficult to find informative and accurate info but here I noted

  232. Gilma Fravel说道:

    hi!,I love your writing so much! proportion we be in contact extra about your article on AOL? I require an expert on this space to resolve my problem. May be that’s you! Having a look forward to see you.

  233. Really enjoyed this article post.Really looking forward to read more. Want more.

  234. I went over this site and I conceive you have a lot of superb info , bookmarked (:.

  235. Very informative blog article.Much thanks again. Much obliged.

  236. Clark Borries说道:

    A blog like yours should be earning much money from adsense.`*”*’

  237. Elfriede Fury说道:

    You made some good points there. I did a search on the subject and found most individuals will go along with with your website.

  238. There’s nothing hotter than Sex for cash pornography. Enjoy watching porn videos with materialis. Hot babes in sex-for-cash are trying incredibly hard to earn some money with a nasty blowjob. Hireling sex-for-money porn videos are featuring some desperate cunts.

  239. It as really a nice and helpful piece of info. I am glad that you shared this helpful info with us. Please keep us informed like this. Thanks for sharing.

  240. Very interesting info !Perfect just what I was looking for!

  241. free porn说道:

    Im obliged for the blog.Really looking forward to read more. Really Cool.

  242. Scottie Villot说道:

    very nice post, i undoubtedly enjoy this excellent website, continue it

  243. Thankyou for this wonderful post, I am glad I noticed this internet site on yahoo.

  244. Gino Maron说道:

    This site is my aspiration , really great layout and perfect subject matter.

  245. Chantel Krass说道:

    Thank you for your very good information and feedback from you. car dealers san jose

  246. Jamison Manatt说道:

    I conceive you have mentioned some very interesting details , appreciate it for the post.

  247. Leonor Mckellan说道:

    Appreciate it for this marvelous post, I am glad I observed this website on yahoo.

  248. clean homes说道:

    wonderful points altogether, you simply gained a brand new reader. What would you suggest in regards to your post that you made some days ago? Any positive?

  249. Tattoo说道:

    What happens to files when my wordpress space upgrade expires?

  250. Very good article! We will be linking to this great post on our website. Keep up the great writing.

  251. on Aol for something else, Regardless I am here now and would just like

  252. It as nearly impossible to find knowledgeable people in this particular subject, but you seem like you know what you are talking about! Thanks

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>