Получавам грешка, докато се опитвам да пиша на туитове в моята psql база данни.
Търсих в интернет високо и ниско (може би не достатъчно добре) за отговора, но без резултат. Разгледах отговорите тук - но предложението беше да преобразувам низа в UTF8 (въпреки че заглавките на отговора твърдят, че вече е UTF-8).
Направих го с този код:
# get the data from twitter
response = RestClient.get "http://search.twitter.com/search.json?rpp=100&since_id=238726971826253824&q=love"
# find the data encoding using CharDet
data = CharDet.detect(response.body)
encoding = data['encoding']
# create a new instance of Iconv with UTF-8 and then convert response.body
ic = Iconv.new('UTF-8//IGNORE', encoding)
converted_response = ic.iconv(response.body + ' ')[0..-2]
# take the data and convert it to JSON
response_json = ActiveSupport::JSON.decode(converted_response)
След това анализираме response_json и създаваме туитове отвътре навън база данни. Въпреки това, когато го правим, получаваме тази грешка по-долу.
[4;36;1mSQL (0.1ms)[0m [0;1mBEGIN[0m
[4;35;1mSQL (0.0ms)[0m [0mPG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xeda0bc
: INSERT INTO "tweets" ("from_user_id", "approved", "from_user", "has_profanity", "twitter_search_id", "twitter_id", "posted_at", "updated_at", "iso_language_code", "profile_image_url", "text", "created_at", "archived", "geo", "to_user_id", "to_user", "metadata", "source", "event_id") VALUES(573857675, NULL, 'nataliekiro', NULL, 618, 238825898718162944, '2012-08-24 02:31:46.000000', '2012-08-24 02:32:05.166492', 'en', 'http://a0.twimg.com/profile_images/2341785780/image_normal.jpg', 'Happy Birthday @daughternumber1 í ¼í¾‚ Love You í ½í¸˜', '2012-08-24 02:32:05.166492', 'f', NULL, 0, NULL,
'--- !map:HashWithIndifferentAccess
result_type: recent
Продължих и тествах класа на response_json (връща Hash), въпреки че в края на тази грешка се казва HashWithIndifferentAccess.
Някой друг да има подобни проблеми и да знае решение?
Благодаря!
ActiveSupport::JSON.decode()
не преобразува ли от json в Ruby структури от данни? Вашият коментар и име на променлива са малко объркващи. - person Craig Ringer   schedule 25.08.2012