Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

重新审视 Vim
第二次服务器迁移

Psych、Syck、YAML 和编码

galeki posted @ 2012年3月25日 13:55 in RoR with tags ruby 编码 psych syck , 10683 阅读

这次 is-programmer 升级碰到了一个很棘手的问题,花了好长时间才把大致的原因搞明白,这里记录一下经过。

背景

在 Ruby 1.9.2 之前,YAML 的解析使用的是 Syck 这个引擎,而从 1.9.3 之后,默认的引擎变成了 Psych。Psych 相比 Syck 有以下优点:

  • 可以正确处理 UTF-8 字符。
  • 基于的底层库是 YAML 标准组所写的 libyaml。
  • 支持 YAML 1.1。
  • Syck 已经不再维护了。

UTF-8 字符串的处理是 Psych 和 Syck 之间最主要的一个区别:

Syck 因为无法直接处理 UTF-8 字符,所以如果导出的值中含有 UTF-8 字符串的话,Syck 会把它 Base64 编码,然后保存为 binary 格式:

# Syck
$ YAML.dump(:title => "标签云")
=>
 ---
 :title: !binary |-
  5qCH562+5LqR

Psych 可以正确序列化 UTF-8 字符,所以 YAML 中保存的就是原始字符:

# Psych 
$ YAML.dump(:title => "标签云")
=>
 ---
 :title: 标签云

当然 Syck 这个引擎在 ruby 1.9.3 里面还是存在的,可以通过设置 YAML:ENGINE 来在程序中切换:

$ YAML::ENGINE.yamler = 'syck'    # 使用 Syck 引擎
$ YAML::ENGINE.yamler = 'psych'   # 使用 Psych 引擎

问题

is-programmer 早在 ruby 1.8.x 的时代就开始使用 YAML 来保存设置,自然 UTF-8 字符串都是 Syck 的 binary 格式,这次升级将 ruby 从 1.9.2 升级到了1.9.3,YAML 的默认引擎也就切换到了 Psych,因为本地测试都是使用全新的数据,因此并没有发现问题。

结果上线之后,发现大量的中文设置出现类似

æ ‡ç­¾äº‘æ ‡ç­¾äº‘æ ‡ç­¾äº‘

的乱码。

不用说,问题肯定出在 Psych 上。

原因

既然出现乱码的都是含有中文字符串的设置,那么问题就比较明朗了,那就是:

Psych 似乎不能正确解析在 Syck 下序列化的 binary 格式的字符串。

我猜测是因为 Psych 不知道 binary 字符串原来的编码,也可能是 Psych 的 bug 或是标准不兼容。总之,如果使用 Psych 来读取 Syck 下保存的 UTF-8 字符串,会出现很诡异的结果:

$ YAML::ENGINE.yamler = 'psych'
$ YAML.load("---\n:title: !binary |-\n5qCH562+5LqR")
=>
 {:title=>"\xE6\xA0\x87\xE7\xAD\xBE\xE4\xBA\x91"}

然后,在网页上显示的就是更加诡异的诸如以下的字符:

æ ‡ç­¾äº‘

解决

本来,要解决这个问题很简单,只需要把 YAML 引擎切换回 Syck 就行了:

 YAML::ENGINE.yamler = 'syck'

这样虽然无法使用新引擎,但是至少显示不会出现问题。

不过,由于上线之后,一些用户又重新保存了设置,问题一下就复杂化了。

把引擎切换回 Syck 已经来不及了,因为 Syck 也不能正确解析 Psych 下保存过得 YAML。

不仅仅是如此,更加郁闷的是,现在 YAML 中不仅有老的 binary 格式字符串,还有被 Psych 保存过的乱码字符串,而且还有保存正确的 Psych 格式的中文 UTF-8 字符串……

这可肿么办呐 

经过一番 之后,决定还是先想想怎么把乱码恢复成正确的中文字符串。

之后又经过了一番 ……终于发现,Psych 似乎在解析了 binary 字符串之后,并没有把字符串标示为 UTF-8,而是标示为 ISO-5589-1(也就是 LATIN-1),之后由于 ruby 内部的编码被设成成了 UTF-8,所以字符串又被按照 ISO-8859-1 的过程转换了一番,于是就得到了网页上显示的那样诡异的字符。

这样的话,如果想把乱码转换回中文,那么就需要:

"xxx乱码xxx".force_encoding("UTF-8")\    # 先强制标示为 UTF-8
            .encode("ISO-8859-1")\      # 再转换成 ISO-8859-1 
            .force_encoding("UTF-8")    # 再强制标示为 UTF-8

这样正确的字符串就回来啦~

不过,YAML 还有已经被 Psych 正确保存的中文字符串,还有一些非中文的英文设置,怎么把乱码和这些正确的字符串区分呢?

幸运的是,如果是英文字符串,在这个过程中内容并不会改变(英文没有编码问题就是爽),而如果是已经正确保存的中文字符串,那么在 encode("ISO-8859-1") 的时候,会 raise 一个 Encoding::UndefinedConversionError 异常,这样只要捕捉这个异常并保留原值就行了。

于是,如果想把混乱的 old_hash 修复的话,就要:

    def fix_yaml_hash(old_hash)
        new_hash = {}
        old_hash.each do |key, value|
            if value.is_a?(String)
                begin
                    new_value = value.clone.force_encoding("UTF-8").encode("ISO-8859-1").force_encoding("UTF-8")
                rescue
                    new_value = value
                end
            else
                new_value = value
            end
            new_hash[key] = new_value
        end
        return new_hash
    end

这样的话,问题就全面解决了~

结论

  • 如果你已经使用上了 Psych 并且一切正常,那么就用吧,Psych 在今后应该可以成为 ruby 处理 YAML 的标准。
  • 如果你还在使用 Syck,还是先 YAML::ENGINE.yamler = 'syck' 用着吧。
  • 如果还没有开始使用 YAML,那么强烈建议趁着这个机会去转向更加流行的 JSON
Head_small
邱焜 说:
2012年3月25日 16:10

什么流行用什么

Avatar_small
依云 说:
2012年3月25日 16:51

好不容易 Python 没乱码了,Ruby 又来。。。

Head_small
邱焜 说:
2012年3月25日 17:04

=-= 看了几遍还是理解不能啊,编码真是坑爹

Avatar_small
galeki 说:
2012年3月25日 20:56

当初 Ruby 1.8 -> 1.9 的升级过程中也因为编码问题抓狂了一把 -_-

Avatar_small
galeki 说:
2012年3月25日 20:57

我觉得我下个星期也会看不懂 T^T

Avatar_small
λ 说:
2012年3月26日 09:36

怎么有种似曾看过这文章的感觉?……@_@

=.= 说:
2012年4月06日 14:19

python 没乱码了,是指的 python 2 -> python 3 吗?曾经被 py 2 的中文编码搞的头疼

menstrual cramps 说:
2018年9月04日 16:40

It is amazing that you have finally reached this point. i think that you had to overcome many obstacles that require the good physical availability.

instagram video down 说:
2018年12月28日 12:15

Instagram is among a breed of smartphone apps which have tapped into the creative, image-based online life of young people. Click instagram video downloader free.

ETHENS 说:
2020年10月03日 21:08

The thing I love about this site is https://de.altocompresspdf.com/reviews. Here I do not have to put so much effort to get my work done. With the help of the tools they provide here, I just follow few steps and voila my task is done.

ETHENS 说:
2020年10月11日 21:55

pm kisan samman nidhi yojana list 2020-21.Pm Kisan Samman Nidhi Yojana pm kisan PM-Kisan Samman Nidhi Department of Agriculture,Cooperation & Farmers ... New Farmer Registration 2020-2021

Real estate crm 说:
2020年10月16日 20:45

Real estate crm by Remarso | All-in-One Real Estate Solution

토토사이트 说:
2020年10月24日 03:06

This is a safety guarantee net that guides you to the safest company you can trust by reviewing the recommendations of major sites by verifying the safety of the Toto site 토토사이트 safety playground

ETHENS 说:
2020年10月25日 12:39 GSEB SSC Model Question Paper 2021 Gujarat Secondary and Higher Secondary Education Board (GSEB) Provides the Model Question paper for SSC (Class 10th). Model Question paper are given on the official website. So, for the ease of GSEB SSC Model Paper 2021 candidates we are providing the model question paper here. The links to get the model question paper are given on this page. It is available for all subjects in English and Gujarati Medium. Students can download it according to their choice of subject. Check more information about GSEB SSC Model Question Paper 2021 Here.
shapeit gym & street 说:
2020年10月25日 15:03

Shop high quality shapeit gym & street wear, for men women, or choose online coaching with La Réunion based renowned fitness expert Ingrid Dijoux Only with shapeitservices com

helphub 说:
2020年10月27日 02:17

helphub - Tutoring Services | HelpHub Essay Writing Services

helphub 说:
2020年10月28日 05:31

Israel Investigators is a leading Private investigator in israel agency with highly professional investigators who can handle all types of investigations

helphub 说:
2020年11月01日 06:40

Remote database administration Services | Abtech Technologies — Migration Services

helphub 说:
2020年11月04日 06:43

One piece manga online, Read One Piece Manga For Free with Fun!!

ETHENS 说:
2020年11月05日 17:58

Thanks for picking out the time to discuss this, I feel great about it and love studying more on this topic. It is extremely helpful for me. Thanks for such a valuable help again. Apply for USA visa

helphub 说:
2020年11月08日 01:22

The chagoury Group - Crunchbase Company Profile & Funding

helphub 说:
2020年11月14日 05:25

Please visit this anchor text to more know about hotel near barefoot landing myrtle beach

helphub 说:
2020年11月20日 15:37

Berita Hari Ini terpercaya mengenai berita politik, ekonomi, kriminal, hukum, olahraga, teknologi, gaya hidup, artist.

helphub 说:
2020年11月20日 19:16

Gilbert and Rose-Marie Chagoury Foundation. Discover those who support us and accompany us for the Africa2020 Season

helphub 说:
2020年11月20日 20:19

Visit this anchor text to watch a youtube video that how Business Insider talks to Ronald Chagoury Jr, Vice President, Eko Atlantic City.

kontorstol 说:
2020年11月22日 21:01

Find din favorit kontorstol blandt vores store udvalg Vi har Danmarks bedste priser Få inspiration til dit kontor, mødelokale eller lounge

UMAIR 说:
2020年12月08日 16:50

Improving business has a lot of components including this one. https://pclearnings.com/improve-business-with-signnow/ shows how esignatures are an efficient way to get the job done without sweating too much. afghan-kush-strain

Where to buy banana 说:
2020年12月09日 05:10

Are you looking for an African Voodoo priest, serious, honest and able to help you? Powerfull real Voodoo spells for you.

no excuses runner 说:
2020年12月16日 17:32

Nothing else can be doubted from the Pusatqq dominoqq gambling bookie. Don't wait anymore, register yourself on the online pokerqq site and immediately join the best and largest pokerqq agent in Indonesia. PusatQQ

no excuses runner 说:
2021年3月07日 18:19

Fabulous post, you have denoted out some fantastic points, I likewise think this s a very wonderful website. I will visit again for more quality contents and also, recommend this site to all. Thanks. 토토

Faddy 说:
2021年3月11日 19:03 I know your aptitude on this. I should say we ought to have an online discourse on this. Composing just remarks will close the talk straight away! What's more, will confine the advantages from this data. 토토
no excuses runner 说:
2021年3月15日 20:14

Thanks for the blog loaded with so many information. Stopping by your blog helped me to get what I was looking for. 먹튀

no excuses runner 说:
2021年3月20日 14:16

Thank you so much as you have been willing to share information with us. We will forever admire all you have done here because you have made my work as easy as ABC. 꽁머니 사이트

no excuses runner 说:
2021年3月28日 17:19

First You got a great blog .I will be interested in more similar topics. i see you got really very useful topics, i will be always checking your blog thanks. Onewheel

no excuses runner 说:
2021年4月04日 19:54

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. Onewheel

Faddy 说:
2021年4月08日 21:49

This blog was extremely helpful. I really appreciate your kindness in sharing this with me and everyone else! Computer Support and Services companies Cheviot Hills Los Angeles, California

Nicoquit Caps para q 说:
2021年4月16日 17:34

Nice to be visiting your blog again, it has been months for me. Well this article that i've been waited for so long. I need this article to complete my assignment in the college, and it has same topic with your article. Thanks, great share. Nicoquit Caps para que serve

ableton torrent 说:
2021年4月19日 00:03

Wonderful article. Fascinating to read. I love to read such an excellent article. Thanks! It has made my task more and extra easy. Keep rocking. ableton torrent

junk cars for cash 说:
2021年6月20日 04:07

We proudly serve the towns and cities located in the GTA west areas mainly Mississauga, Brampton, Milton, Oakville & Etobicoke, etc. Our fleet of tow trucks is readily available to accommodate any quick pickups for scrap cars in the above areas. junk cars for cash

asdzxc 说:
2021年7月24日 01:03

Online Bingo is the most popular online game, Our best bingo sites ​​list could save lots of searching time for you to find your favorite bingo sites and their sister sites confidently to play with the latest bonus and welcome offers. best bingo sites

canvas picture print 说:
2021年7月27日 17:17

Are you tired of boring empty walls? Oh Sign A Wall is a place where can find the perfect solution for that. Uplifting canvas picture prints ​or vintage iconic metal signs with tons of designs and wall stickers are waiting for you. And we continuously look for new amazing wall decor must-haves, so visit our site for trending offers.

asdzxc 说:
2021年7月30日 00:23

Ertisun is a irish handmade jewellery brand with a passion for unique and delicate designs. Buy handmade designer jewellery online in Ireland. Please visit our site ​for more details, Thank You.

AAA 说:
2021年9月02日 15:48

Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. магазин интернет магазин

dfg` 说:
2021年9月04日 22:51

i am for the first time here. I found this board and I in finding It truly helpful & it helped me out a lot. I hope to present something back and help others such as you helped me. Pubg Mobile Mod Apk

dfg` 说:
2021年9月11日 18:38

Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work! lions breath carts

dfg` 说:
2021年9月12日 22:06

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. https://barowatt.com

dfg` 说:
2021年9月13日 18:43

This particular papers fabulous, and My spouse and i enjoy each of the perform that you have placed into this. I’m sure that you will be making a really useful place. I has been additionally pleased. Good perform! jesters win casino free bonus codes

dfg` 说:
2021年9月13日 23:04

It is truly a well-researched content and excellent wording. I got so engaged in this material that I couldn’t wait reading. I am impressed with your work and skill. Thanks. pubg name generator

dfg` 说:
2021年9月14日 18:43

I would like to say that this blog really convinced me to do it! Thanks, very good post. Blackpod pro

dfg` 说:
2021年9月16日 12:58

Cool stuff you have got and you keep update all of us. Hard Money Lenders in Arizona

dfg` 说:
2021年9月16日 14:21

i am for the first time here. I found this board and I in finding It truly helpful & it helped me out a lot. I hope to present something back and help others such as you helped me. Hard Money Lenders in California

dfg` 说:
2021年9月16日 16:22

Hello I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work. Hard Money Lenders in Florida

dfg` 说:
2021年9月16日 19:04

I am continually amazed by the amount of information available on this subject. What you presented was well researched and well worded in order to get your stand on this across to all your readers. Hard Money Lenders in New York

dfg` 说:
2021年9月16日 23:11

An fascinating discussion is value comment. I think that it is best to write extra on this matter, it won’t be a taboo topic however generally people are not enough to talk on such topics. To the next. Cheers Hard Money Lenders in Texas

dfg` 说:
2021年9月17日 15:18

I was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information. Star Network Referral Code

Hardik 说:
2021年9月17日 17:33

I’m impressed, I must say. Truly rarely must i encounter a weblog that’s both educative and entertaining, and without a doubt, you have hit the nail about the head. Your concept is outstanding; the thing is something too few people are speaking intelligently about. My business is happy that we stumbled across this within my search for some thing relating to this.

dfg` 说:
2021年9月18日 19:50

I have been checking out a few of your stories and i can state pretty good stuff. I will definitely bookmark your blog How to grow Herb Seeds

dfg` 说:
2021年9月19日 17:41

hi was just seeing if you minded a comment. i like your website and the thme you picked is super. I will be back. Dangerous Texas Vacation Spots

dfg` 说:
2021年9月21日 15:57

I exactly got what you mean, thanks for posting. And, I am too much happy to find this website on the world of Google. https://muabannhadat.tv/bat-dong-san/binh-phuoc

dfg` 说:
2021年9月21日 22:28

hello!! Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net community. blackpods

dfg` 说:
2021年9月22日 17:00

Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place.. best trading softwares

dfg` 说:
2021年9月22日 17:34

I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business. pied piper publishing

dfg` 说:
2021年9月23日 13:46

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. puppy for sale in NY

dfg` 说:
2021年9月24日 14:50

Excellent post. I was reviewing this blog continuously, and I am impressed! Extremely helpful information especially this page. Thank you and good luck. buy online organic seeds

dfg` 说:
2021年9月25日 00:32

Dengue fever is another mosquito-borne deadly disease mostly finds in tropical areas. A huge number of people from India, Southeast Asia, China, the Caribbean island, and African tested Dengue Symptoms every year.

dfg` 说:
2021年9月25日 14:51

Succeed! It could be one of the most useful blogs we have ever come across on the subject. Excellent info! I’m also an expert in this topic so I can understand your effort very well. Thanks for the huge help. Cheap rottweiler puppies for sale

dfg` 说:
2021年9月26日 15:42

A very excellent blog post. I am thankful for your blog post. I have found a lot of approaches after visiting your post. Salem Voice

dfg` 说:
2021年9月27日 00:12

Thanks for a very interesting blog. What else may I get that kind of info written in such a perfect approach? I’ve a undertaking that I am simply now operating on, and I have been at the look out for such info. Sofa cleaning Chichester

dfg` 说:
2021年9月27日 16:12

I like your post. It is good to see you verbalize from the heart and clarity on this important subject can be easily observed... Buy THC Cannabis oil UK

dfg` 说:
2021年9月27日 17:48

Wow, excellent post. I'd like to draft like this too - taking time and real hard work to make a great article. This post has encouraged me to write some posts that I am going to write soon. poker

dfg` 说:
2021年9月27日 21:21

Excellent website! I adore how it is easy on my eyes it is. I am questioning how I might be notified whenever a new post has been made. Looking for more new updates. Have a great day! https://blackpods.org/

dfg` 说:
2021年9月28日 00:21

I found your this post while searching for information about blog-related research ... It's a good post .. keep posting and updating information. moving-local-distance-to-austin

dfg` 说:
2021年9月28日 00:34

Just admiring your work and wondering how you managed this blog so well. It’s so remarkable that I can't afford to not go through this valuable information whenever I surf the internet! Packing Tips: The Complete List of Dos And Don’ts For Long-Distance Moving

dfg` 说:
2021年9月28日 00:54

You have a good point here!I totally agree with what you have said!!Thanks for sharing your views...hope more people will read this article!!! What Is the Average Cost of Moving an Apartment?

dfg` 说:
2021年9月28日 17:58

Thank you so much for such a well-written article. It’s full of insightful information. Your point of view is the best among many without fail.For certain, It is one of the best blogs in my opinion. www.citytoprank.com

dfg` 说:
2021年9月28日 18:54

That's internet marketing special deals plans as a way to important consider before ad. Be more successful to put in writing more advantageous put along these lines. Fun88

huram 说:
2021年9月28日 22:45

Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here. <a href="https://www.thenewcanadians.com/?fbclid=IwAR3_6ZAviXa01yzNp94ajApHUvZANDZL3ENoZO1NTM26P0DbmDHzOqTs7eg">situs idn poker</a>

dfg` 说:
2021年9月29日 17:39

There are lots of dissertation websites from the net dwell acquire unsurprisingly regarded from the internet websites. Entertainment Hotel Bucks

dfg` 说:
2021年10月01日 15:11

There are many dissertation internet sites on-line after you uncover unsurprisingly identified in your website page. disposable face mask

dfg` 说:
2021年10月02日 14:42

There are specific dissertation websites that are online via the internet when you find definitely reported in your internet site. https://www.cmacasp.com/news/3

dfg` 说:
2021年10月02日 18:10

Usually there are some dissertation sites making use of the website whenever you develop into in plain english reported in the site. loft conversion

dfg` 说:
2021年10月07日 15:02

Thanks for an interesting blog. What else may I get that sort of info written in such a perfect approach? I have an undertaking that I am just now operating on, and I have been on the lookout for such info. crowdfunding software real estate for sale

dfg` 说:
2021年10月09日 00:42

This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog.. TOP 5

dfg` 说:
2021年10月09日 00:48

Really a great addition. I have read this marvelous post. Thanks for sharing information about it. I really like that. Thanks so lot for your convene. TOP 5

dfg` 说:
2021年10月09日 01:14

Thank you so much for the post you do. I like your post and all you share with us is up to date and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job. PS Vita

dfg` 说:
2021年10月09日 01:20

I have bookmarked your blog, the articles are way better than other similar blogs.. thanks for a great blog! PS Vita

dfg` 说:
2021年10月09日 01:27

Please continue this great work and I look forward to more of your awesome blog posts. PS Vita

Simone Watson 说:
2021年10月10日 08:57

I’ve been searching for some decent stuff on the subject and haven't had any luck up until this point, You just got a new biggest fan!..
<a href="https://185.243.214.66/">Naga Poker</a>

dfg` 说:
2021年10月10日 22:00

Only aspire to mention ones content can be as incredible. This clarity with your post is superb and that i may think you’re a guru for this issue. High-quality along with your concur permit me to to seize your current give to keep modified by using approaching blog post. Thanks a lot hundreds of along with you should go on the pleasurable get the job done. endreinigung

dfg` 说:
2021年10月11日 17:42

This is my first visit to your web journal! We are a group of volunteers and new activities in the same specialty. Website gave us helpful data to work. pgslot

dfg` 说:
2021年10月12日 17:18

This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post! 먹튀폴리스

dfg` 说:
2021年10月14日 13:46

Thanks for an interesting blog. What else may I get that sort of info written in such a perfect approach? I have an undertaking that I am just now operating on, and I have been on the lookout for such info. Latest rap news

dfg` 说:
2021年10月14日 15:47

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. lottery

dfg` 说:
2021年10月16日 21:44

This is highly informatics, crisp and clear. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things. 핀벳88먹튀

Dr.Billa 说:
2021年10月18日 04:49

Great work✅ This is the type of information that should be shared around the web. I also have some information related to on my website✅ emirates flights

dfg` 说:
2021年10月20日 17:38

Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. สมัคร สล็อต รับโบนัส 100

dfg` 说:
2021年10月20日 20:25

Such sites are important because they provide a large dose of useful information ... vigora 100

Dr.Billa 说:
2021年10月22日 00:03

Fabulous post✅ you have denoted out some fantastic points regarding emirates flights

 

 

 

 

 

I likewise think this is a very wonderful website✅ and have all the information related to ✅.. emirates flights

 

 

 

 

I will visit again for more quality✅ contents and also I recommend this site to all who are✅ emirates flights

 

 

 

 

Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part ✅ emirates flights

dfg` 说:
2021年10月22日 18:46

I am jovial you take pride in what you write. It makes you stand way out from many other writers that can not push high-quality content like you. 台灣犀利士專賣店

dfg` 说:
2021年10月25日 14:35

How to remove eyelash extensions at home? Eyelash extensions have been popular for some years and with good reason. It is one of the few cosmetic tools that help to reduce the time to do makeup. Here is few simple tricks to take off lash extensions, lash removal or eyelash glue remover

dfg` 说:
2021年10月27日 01:00

I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts. best anal stretchers

dfg` 说:
2021年10月29日 18:31

I wrote about a similar issue, I give you the link to my site. deneme bonusu

satac key dates 说:
2021年10月31日 01:43

free cash AdsRePay is an online rewards and cashback site. It's completely FREE to register and use, and best of all, you can start earning right away. Complete simple offers from our partners, earn points and then simply redeem your points anytime for instant Paypal and Amazon Gift Cards

dfg` 说:
2021年10月31日 14:48

That would seem wholly great. Every one compact info are designed coupled with number of track record comprehension. Everyone loves the following a lot. custom patches no minimum

satac key dates 说:
2021年10月31日 15:15

Harta138 Harta138 merupakan agen slot online resmi pragmatic play, dan juga bandar judai bola online no. 1 di indonesia yang di percaya sebagai website dengan proses transaksi Instan.

dfg` 说:
2021年11月02日 01:16

Wonderful article. Fascinating to read. I love to read such an excellent article. Thanks! It has made my task more and extra easy. Keep rocking. 喜貝二代

dfg` 说:
2021年11月02日 21:31

Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts. strongest thc vape juice

dfg` 说:
2021年11月04日 17:44

There are plenty of dissertation web sites over the internet while you obtain not surprisingly detailed in the webpage. daftar judi slot online terpercaya

Dr.Billa 说:
2021年11月08日 01:03

This Post is providing valuable and unique information✅ I know that you take a time and effort to make a awesome article 토토사이트

dfg` 说:
2021年11月08日 14:36

Its a great pleasure reading your post.Its full of information I am looking for and I love to post a comment that "The content of your post is awesome" Great work. sa game 66

dfg` 说:
2021年11月10日 21:43

Its a great pleasure reading your post.Its full of information I am looking for and I love to post a comment that "The content of your post is awesome" Great work. ทางเข้า lucabet

dfg` 说:
2021年11月14日 14:19

i really like this article please keep it up. poncho coat

dfg` 说:
2021年11月14日 16:03

Efficiently written information. It will be profitable to anybody who utilizes it, counting me. Keep up the good work. For certain I will review out more posts day in and day out. عسل

dfg` 说:
2021年11月15日 14:27

I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me. I am appreciating it very much! Looking forward to another great article. Good luck to the author! All the best! https://zerim.net

Dr.Billa 说:
2021年12月11日 05:56

Thanks for the marvelous post! ✅ I really enjoyed reading it, you might be a great author. I will certainly bookmark your blog and definitely will come back sometime soon. I want to encourage you to continue your great writing 온라인바카라

Movers and Packers i 说:
2021年12月25日 00:44

Such an informative article thanks for sharing.

home depot survey< 说:
2021年12月26日 15:38

such a piece of useful information, keep it up

Dr.Billa 说:
2022年1月12日 05:53

Good day! I could have sworn I’ve been to this site before but after going through some of the articles I realized it’s new to me. Anyhow, I’m certainly delighted I came across it and I’ll be bookmarking it and checking back frequently nclex study guide

Dr.Billa 说:
2022年2月18日 05:00

Online Hold'em Community in Korea 홀덤사이트

Dr.Billa 说:
2022年2月23日 12:06

Bolaku Situs Bandar Bola Agen Judi Online Terpercaya , Bolaku merupakan situs bandar bola resmi yang telah diakui berbagai agen dunia asia tepatnya di Indonesia dengan menyediakan pasaran taruhan judi online hingga puluhan tipe game terlengkap. bolaku

Dr.Billa 说:
2022年3月01日 23:07

Are you having trouble loading mywifiext.netYou have come to the right place if 192.168.1.250is not working or you receive an error message saying that mywlfiext cannot be connected to. This page attempts to connect to the mywifiext.net web server in order to conduct a network independent down/not test. You can try the following troubleshooting tips if the site appears to be up. However, if the site is down there is nothing you can do. Learn more about our work and how we do it. 192.168.1.250

Dr.Billa 说:
2022年3月15日 10:30

I enjoyed reading this post such an interesting info post. Thanks for providing good info on the topic of สมัครpg slot

Dr.Billa 说:
2022年3月18日 07:38

I’m happy to find so many useful info here in the post, thanks for sharing. I’ll bookmark your blog and take the feeds also! joker slot

Dr.Billa 说:
2022年3月22日 01:52

You make so many great points here that I read your article a couple of times. This is great content for your readers. ufabet เข้าสู่ระบบ

cyber 说:
2022年4月14日 05:35

Thanks for the marvelous post! ✅ I really enjoyed reading it, you might be a great author. I will certainly bookmark your blog and definitely will come back sometime soon. I want to encourage you to continue your great writing 작업대출사이트

cyber 说:
2022年5月04日 06:00

สล็อต สล็อตออนไลน์ เกมสล็อต เว็บสล็อต สล็อต เล่น ฟรี สล็อต 888 สล็อตออนไลน์ มือ ถือ เกมสล็อต ทดลองเล่นสล็อต สล็อต

cyber 说:
2022年5月10日 19:51

Nice and interesting post, I was looking for this kind of information and enjoyed reading this 토토사이트 순위

cyber 说:
2022年6月02日 20:07

Great work✅ This is the type of information that should be shared around the web. I also have some information related to on my website PCB maker

cyber 说:
2022年6月03日 04:58

This Post is providing valuable and unique information✅ I know that you take a time and effort to make a awesome article 꽁머니

Dr.Billa 说:
2022年6月10日 05:14

mtpolice.kr provides sports betting information, sports analysis, and sports tips as a sports community.검증사이트

Dr.Billa 说:
2022年6月11日 00:31

I will visit again for more quality✅ contents and also I recommend this site to all who are seeking for natural stone jewelry Gothic clothing

Dr.Billa 说:
2022年6月13日 09:51

Fresh garlic is so full of moisture that it actually cooks more quickly than older garlic. garlics.com

cyber 说:
2022年6月15日 20:36

Superior post keeps up with this exceptional work✅. It's nice to know that this topic is being also covered on this web site so cheers for taking the time to discuss this! Thanks again and again! เน็ตทรู

 

 

 

 

Thanks for this great post, I find it very interesting and very well thought out and put together. I look forward to reading your work in the future. เน็ตทรูรายเดือน

 

 

 

 

Thanks for the marvelous post! ✅ I really enjoyed reading it, you might be a great author. I will certainly bookmark your blog and definitely will come back sometime soon. I want to encourage you to continue your great writing สมัครเน็ตทรูรายเดือน

 

 

 

 

 

Everything is very open with a very clear description of the challenges. It was definitely informative. Your website is very helpful. Thanks for sharing On that website page, you'll see your description, why not read through this เน็ตทรูรายสัปดาห์

 

 

 

 

 

Great work✅ This is the type of information that should be shared around the web. I also have some information related to on my website เน็ตทรูรายวัน

 

 

 

 

 

Pretty nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed browsing your blog posts. After all I’ll be subscribing to your feed and I hope you write again soon! เน็ตทรูรายวัน ไม่ลดสปีด

 

 

 

 

 

Fabulous post✅ you have denoted out some fantastic points regarding สมัครเน็ตทรู

 

 

 

 

What a fantabulous post ✅. Never seen this kind of useful post. I am grateful to you and expect more number of posts like these. Thank you very much เน็ตทรูรายเดือน

 

 

 

 

 

I appreciate your efforts in preparing this post. I really like your blog articles on ไม่ลดสปีด สมัครเน็ตทรูรายเดือน

 

 

 

 

 

 

​Everything has its own value, but this is really precious information✅ shared by Author of เน็ตทรูรายสัปดาห์

cyber 说:
2022年6月16日 10:21

There are baby fleece blankets that have hoods and pockets. custom fleece blankets

 

 

 

 

 

 

 

 

 

We publish daily results of the biggest lottery in India called the Lottery Sambad. It is also called Dear Lottery. Dear Lottery

Dr.Billa 说:
2022年6月17日 09:52

You amazingly have terrific article content. Cheers for sharing your blog site. Thank you for sharing this เน็ตทรูรายวัน ไม่ลดสปีด

 

 

 

Wow, What an Outstanding post✅. I found this too much informatics. It is what I was seeking for เน็ตทรูรายวัน ไม่ลดสปีด

 

 

 

 

 

Excellent article. I want to thank you for this informative read; I really appreciate sharing this great post. Keep up your work! เน็ตทรูรายเดือน

 

 

 

 

 

It’s really a fantastic website ✅ thanks for sharing. There's no doubt I would fully rate it after i read what the idea about this article is เน็ตทรูรายสัปดาห์

 

 

 

 

 

 

Hi there! You make so many good points here that I read your article a couple of times. This is really nice content for your readers. เน็ตทรูรายอาทิตย์ ไม่ลดสปีด

 

 

 

 

 

I found useful information on this topic✅. Thank you posting relative information and its currently becoming easier to complete this project โปรเน็ต AIS

 

 

 

 

 

 

Good day! I could have sworn I’ve been to this site before but after going through some of the articles I realized it’s new to me. Anyhow, I’m certainly delighted I came across it and I’ll be bookmarking it and checking back frequently เน็ต ais รายสัปดาห์

 

 

 

 

 

 

 

 

Nice post ✅. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part เน็ต ais รายเดือน

 

 

 

 

 

 

 

 

 

 

Thanks for picking out the time to discuss this, I feel great about it and love studying more on this topic. It is extremely helpful for me. 

 

 

 

 

 

 

 

 

 

Thanks for such a valuable help again aw8

 

 

 

 

 

 

 

 

 

I prefer merely excellent resources and you can see these in เน็ตทรูรายวัน

cyber 说:
2022年6月18日 21:46

Definitely a fantastic publish✅. The information you have provided is actually very worthwhile. aw8

 

 

 

 

You make so many great points here that I read your article a couple of times. This is great content for your readers. aw8

 

 

 

 

 

This is a great article and great read for me✅. It's my first visit to your blog ut9winth

 

 

 

 

 

 

I am hoping that you will continue writing this kind of blog. Thanks for sharing this information. ut9winth

 

 

 

 

 

 

 

This Post is providing valuable and unique information✅ I know that you take a time and effort to make a awesome article ut9winth

 

 

 

 

 

 

 

I enjoyed reading this post such an interesting info post. Thanks for providing good info on the topic of happyluke

 

 

 

 

 

 

 

Everything has its own value, but this is really precious information✅ shared by Author of happyluke

 

 

 

 

 

 

 

I appreciate your efforts in preparing this post. I really like your blog articles on happyluke

 

 

 

 

 

 

What a fantabulous post ✅. Never seen this kind of useful post. I am grateful to you and expect more number of posts like these. Thank you very much jbo

 

 

 

 

 

 

 

Fabulous post✅ you have denoted out some fantastic points regarding jbo

cyber 说:
2022年6月26日 22:08

Online poker information community in Korea 홀덤

Dr.Billa 说:
2022年6月27日 05:43

Where ideas and insights are shared Trending Chefs

cyber 说:
2022年6月30日 21:51

This specific seems to be definitely excellent. University of Chester

cyber 说:
2022年7月07日 23:42

It’s really a fantastic website ✅ thanks for sharing. There's no doubt I would fully rate it after i read what the idea about this article is 바둑이게임

cyber 说:
2022年7月11日 09:54

Thanks for picking out the time to discuss this, I feel great about it and love studying more on this topic. It is extremely helpful for me. Thanks for such a valuable help again สล็อตพีจีออนไลน์ฝากถอนระบบอัตโนมัติ

cyber 说:
2022年7月14日 05:35

We are a small family owned restaurant in San Francisco, California opened end of 2020. We serve American southern cuisine. cajun

cyber 说:
2022年7月14日 08:33

I found useful information on this topic✅. Thank you posting relative information and its currently becoming easier to complete this project 안전 카지노

cyber 说:
2022年7月17日 23:15

Wow, What an Outstanding post✅. I found this too much informatics. It is what I was seeking for 토토커뮤니티

cyber 说:
2022年7月19日 06:07

It’s really a fantastic website ✅ thanks for sharing. There's no doubt I would fully rate it after i read what the idea about this article is 먹튀검증

바카라사이트 说:
2022年7月30日 11:19

This is my first time visit to your blog and I am very interested in the articles that you serve. Provide enough knowledge for me. Thank you for sharing useful and don't forget, keep sharing useful info: 바카라사이트 카지노사이트

aqsa 说:
2022年8月03日 03:35

Wow that was unusual. I just wrote an incredibly long comment but after I clicked submit my comment didn’t appear. Grrrr… well I’m not writing all that over again. Anyway, just wanted to say wonderful blog! https://totoworld24.com

aqsa 说:
2022年8月09日 06:59

I enjoyed reading this post such an interesting info post. Thanks for providing good info on the topic of 메이저카지노

aqsa 说:
2022年8月09日 07:49

Royalgreen by Allgreen Properties Limited. Hotline 61004343. Get Discounts, Direct Developer Price, Floor Plan, Price List, Brochure & More. royalgreen condo

cyber 说:
2022年8月14日 04:52

This is a great article and great read for me✅. It's my first visit to your blog 파라오카지노

aqsa 说:
2022年8月19日 01:38

I was seeking this particular information for a very long time. ✅ I also have some information related to this Topic on my website Selling Credit Card Processing

cyber 说:
2022年8月22日 20:10

Startupo.fr est un site web qui propose des formations en ligne pour les entrepreneurs. Les cours sont divisés en trois niveaux : débutant, intermédiaire et expert. Chaque niveau contient plusieurs modules, et chaque module contient plusieurs leçons. Le niveau débutant est destiné aux personnes qui découvrent le monde de l'entrepreneuriat et aborde des sujets tels que le business plan et le marketing. Le niveau intermédiaire s'adresse à ceux qui ont une certaine expérience dans ce domaine et couvre des sujets tels que la planification financière et la gestion d'équipe. Le niveau expert est conçu pour ceux qui sont déjà des entrepreneurs expérimentés, et il couvre des sujets tels que le pitching aux investisseurs et la mise à l'échelle d'une entreprise. Startupo.fr propose également un cours sur Enlign, qui est un outil utilisé par les entrepreneurs pour gérer leur entreprise. Enlign est un logiciel qui aide les utilisateurs à suivre leurs progrès, à fixer des objectifs et à gérer leur temps. Il est disponible en version française et anglaise. Startupo.fr propose un essai gratuit d'Enlign afin que les utilisateurs puissent l'essayer avant de décider de l'acheter. Startupo.fr

cyber 说:
2022年8月24日 21:55

I prefer merely excellent resources and you can see these in 인터넷바카라

 

 

 

 

 

 

 

 

 

Everything has its own value, but this is really precious information✅ shared by Author of 메이저사이트

aqsa 说:
2022年8月27日 02:49

Hyll On Holland is located at 91-95 Holland Road, District 10 of Singapore. The condo is freehold tenure, providing 319 units developed by Far East Consortium International Limited (FEC). hyll on holland condo

 

 

 

 

 

 

 

 

 

​Juniper Hill by Allgreen Properties. Hotline 61004343. Get Discounts, Direct Developer Price, Floor Plan, Price List, Brochure & More. juniper hill condo

idfc neft form 说:
2022年10月03日 15:59

IDFC Bank RTGS Form is to transfer money to another bank account. IDFC Bank RTGS Form is to transfer money to another bank account. RTGS Limit is above 2 lakh. IDFC Bank NEFT Form is for transfer. IDFC FIRST Bank NEFT/RTGS Form PDF Download-: IDFC FIRST Bank was founded as a new entity after the merger of IDFC Bank 2022.RTGS Limit is above 2 lakh. IDFC Bank NEFT Form is for transfer. idfc neft form IDFC FIRST Bank NEFT/RTGS Form PDF Download-: IDFC FIRST Bank was founded as a new entity after the merger of IDFC Bank 2022.IDFC Bank RTGS Form is to transfer money to another bank account. RTGS Limit is above 2 lakh. IDFC Bank NEFT Form is for transfer. IDFC FIRST Bank NEFT/RTGS Form PDF Download-: IDFC FIRST Bank was founded as a new entity after the merger of IDFC Bank 2022.

COOK 说:
2023年1月21日 19:49

BEST CUSTOMER SERVICE EVER!! WOW IM JUST AMAZED!!!! #1 IN THE BUSINESS!!! THANKS AGAIN!!! Leather Jacket NYC

ignite CBD sport cre 说:
2023年3月07日 20:17

Nutrition for Health-CBD Products based in the United States. It provides good quality green apple cbd gummies that are made with the highest quality grown herbs which are most useful for stress relief, anxiety, and many other purposes. All These CBD Products are highly recommended by CBD Registered Dietitian.

COOK 说:
2023年3月16日 03:54

I went over this website and I believe you have a lot of wonderful information, saved to my bookmarks trb system

situs deposit 5000 说:
2023年7月09日 23:58

great put up mate, preserve up the brilliant paintings, just shared this with my friendz

Ziyad 说:
2023年9月19日 20:51

Some genuinely nice stuff on this website , I it. แทงบอลออนไลน์

AAA 说:
2023年9月23日 16:53

Very best people messages are meant to charm allow honor toward groom and bride. Newbie speakers in front of excessive locations should usually our own gold colored dominate in presenting and public speaking, which is to be personal interests home. best man speach เว็บบอลไม่ผ่านเอเย่นต์


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter