<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; xmpp4r</title>
	<atom:link href="http://blog.lukmus.ru/tag/xmpp4r/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>xmpp4r/xmpp4r-simple учим русскому</title>
		<link>http://blog.lukmus.ru/2011/08/12/xmpp4rxmpp4r-simple-uchim-russkomu/</link>
		<comments>http://blog.lukmus.ru/2011/08/12/xmpp4rxmpp4r-simple-uchim-russkomu/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 02:26:39 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[ASCII-8BIT]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[xmpp4r]]></category>
		<category><![CDATA[xmpp4r-simple]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1058</guid>
		<description><![CDATA[Обычно как только сделаешь простейший клиент XMPP через используя гем xmpp4r начинается трабла с русским языком, а точнее со всеми кодировками != ASCII. Т.е. все прекрасно работает до тех пор пока не появится текст не на английском. Если в коде включен отладчик и код выглядит примерно так: 1 2 3 4 5 6 7 8 [...]]]></description>
			<content:encoded><![CDATA[<p>Обычно как только сделаешь простейший клиент XMPP через используя гем xmpp4r начинается трабла с русским языком, а точнее со всеми кодировками != ASCII. Т.е. все прекрасно работает до тех пор пока не появится текст не на английском.<br />
<img class="aligncenter size-full wp-image-1059" title="95daab683a7c" src="http://blog.lukmus.ru/wp-content/uploads/2011/08/95daab683a7c.jpg" alt="" width="517" height="325" /><span id="more-1058"></span><br />
Если в коде включен отладчик и код выглядит примерно так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#coding: utf-8</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'xmpp4r-simple'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">include</span> Jabber
Jabber::debug = <span style="color:#0000FF; font-weight:bold;">true</span>
&nbsp;
jabber = <span style="color:#6666ff; font-weight:bold;">Jabber::Simple</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'login@server.com'</span>, <span style="color:#996600;">'pass'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">loop</span> <span style="color:#9966CC; font-weight:bold;">do</span>
   messages = jabber.<span style="color:#9900CC;">received_messages</span>
   <span style="color:#008000; font-style:italic;">#jabber.status(:away,'lets chat')</span>
   messages.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>message<span style="color:#006600; font-weight:bold;">|</span>
     body = message.<span style="color:#9900CC;">body</span> <span style="color:#008000; font-style:italic;">#if message.type == :chat</span>
     <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'&gt;'</span><span style="color:#006600; font-weight:bold;">+</span>body
     jabber.<span style="color:#9900CC;">deliver</span><span style="color:#006600; font-weight:bold;">&#40;</span>message.<span style="color:#9900CC;">from</span>, <span style="color:#996600;">'Re:'</span><span style="color:#006600; font-weight:bold;">+</span>body<span style="color:#006600; font-weight:bold;">&#41;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#each</span>
   <span style="color:#CC0066; font-weight:bold;">sleep</span> <span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#loop</span></pre></td></tr></table></div>

<p>То и вылетит ошибка примерно такая:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">REXML::ParseException <span style="color: #666666; font-style: italic;">#&lt;Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)&gt;</span>
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>rubies<span style="color: #000000; font-weight: bold;">/</span>ruby-1.9.2-p180<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span>1.9.1<span style="color: #000000; font-weight: bold;">/</span>rexml<span style="color: #000000; font-weight: bold;">/</span>source.rb:<span style="color: #000000;">214</span>:in <span style="color: #000000; font-weight: bold;">`</span>match<span style="color: #ff0000;">'
    /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rexml/source.rb:214:in `match'</span>
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>rubies<span style="color: #000000; font-weight: bold;">/</span>ruby-1.9.2-p180<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span>1.9.1<span style="color: #000000; font-weight: bold;">/</span>rexml<span style="color: #000000; font-weight: bold;">/</span>parsers<span style="color: #000000; font-weight: bold;">/</span>baseparser.rb:<span style="color: #000000;">369</span>:in <span style="color: #000000; font-weight: bold;">`</span>pull<span style="color: #ff0000;">'
    /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rexml/parsers/sax2parser.rb:92:in `parse'</span>
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>ruby-1.9.2-p180<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>xmpp4r-<span style="color: #000000;">0.5</span><span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>xmpp4r<span style="color: #000000; font-weight: bold;">/</span>streamparser.rb:<span style="color: #000000;">79</span>:in <span style="color: #000000; font-weight: bold;">`</span>parse<span style="color: #ff0000;">'
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/xmpp4r-0.5/lib/xmpp4r/stream.rb:75:in `block in start'</span>
    ...
    Exception parsing
    Line:
    Position: <span style="color: #000000;">0</span>
    Last <span style="color: #000000;">80</span> unconsumed characters:</pre></td></tr></table></div>

<p>Лечится она еще проще чем <a href="http://blog.lukmus.ru/?p=1048">предыдущая</a>.<br />
Открываем тот самый<code> /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rexml/source.rb</code>, находим строку с номером 214 (я там в файле уже понавставлял несколько лишних строчек, поэтому номер может несущественно отличатся):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>211
212
213
214
215
216
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">...
<span style="color:#9966CC; font-weight:bold;">def</span> match<span style="color:#006600; font-weight:bold;">&#40;</span> pattern, cons=<span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#006600; font-weight:bold;">&#41;</span>
      rv = pattern.<span style="color:#9900CC;">match</span><span style="color:#006600; font-weight:bold;">&#40;</span>@buffer<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@buffer</span> = $<span style="color:#996600;">' if cons and rv
      while !rv and @source
...</span></pre></td></tr></table></div>

<p>И приводим этот кусок к виду:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>211
212
213
214
215
216
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">...
<span style="color:#9966CC; font-weight:bold;">def</span> match<span style="color:#006600; font-weight:bold;">&#40;</span> pattern, cons=<span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@buffer</span>=@buffer.<span style="color:#9900CC;">force_encoding</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'utf-8'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      rv = pattern.<span style="color:#9900CC;">match</span><span style="color:#006600; font-weight:bold;">&#40;</span>@buffer<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@buffer</span> = $<span style="color:#996600;">' if cons and rv
...</span></pre></td></tr></table></div>

<p>Также на всякий случай не помешает вставить в самое начало этого файла строчку:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#coding: utf-8</span></pre></td></tr></table></div>

<p>После таких манипуляций у меня все начало корректно работать.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2011/08/95daab683a7c.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/08/12/xmpp4rxmpp4r-simple-uchim-russkomu/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
