<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Ron<div class=""><br class=""></div><div class=""><br class=""><blockquote type="cite" class="">On 11.09.2018, at 17:38, Ron Teitelbaum <<a href="mailto:ron@usmedrec.com" class="">ron@usmedrec.com</a>> wrote:<br class=""><br class="">Hi All,<br class=""><br class="">I ran into this problem.  Has anyone seen this before?  <br class=""><br class="">I was importing a file that contained some sort of char code 160.  <a href="http://www.adamkoch.com/2009/07/25/white-space-and-character-160/" class="">http://www.adamkoch.com/2009/07/25/white-space-and-character-160/</a> says this is a non-breaking space.  <br class=""><br class="">I pasted the character into Squeak. When trying to inspect it in squeak I get illegal character.  <br class=""><br class=""></blockquote><div class=""><br class=""></div><div class="">Can you get me the char before the 160?</div><div class=""><br class=""></div><div class="">I see that the ahead char is 30, which makes things very strange.</div><div class=""><br class=""></div><div class="">First this does not look like Latin-1, where 160/0xa0 would be nbsp, because the ahead is 30/1e, a control char, and not defined in Latin-1.</div><div class="">It is in ascii (record separator RS), but there 160/0xa0 is not defined.</div><div class="">Windows CP 1252 would have both, but I am a bit unsure as to whether you'd actually find a NBSP+RS combo just like that in smalltalk data…</div><div class=""><br class=""></div><div class="">Leaves, eg, MacRoman (I _think_ stuff used to be coded in macroman in Squeak in the 90s), and</div><div class="">there 30/0x1e ist still RS (strange) but 160/0xA0 is Dagger (†) which is indeed illegal.</div><div class=""><br class=""></div><div class="">So could you give us a bit content around the char?</div><div class=""><br class=""></div><div class="">Best regards</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>-Tobias</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">PS: EBCDIC would make no sense at all…</div><div class="">PPS: Interestingly, 160/0xA0 is actually defined #xBinary…</div><div class=""><br class=""></div><div class=""><img apple-inline="yes" id="D9A3DF1B-524A-4E22-8B57-7F2265963FEB" height="163" width="551" apple-width="yes" apple-height="yes" src="cid:141CB1C2-348C-4351-8D26-B828E0736D45@fritz.box" class=""></div><div class=""><br class=""></div><br class=""><blockquote type="cite" class="">Illegal character (char code 160 16r16rA0) -><br class=""><br class="">The 16r16r seems to be an error in the method and not a real number<br class=""><br class="">xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">       </span>"An illegal character was encountered"<br class=""><span class="Apple-tab-span" style="white-space:pre">       </span>self halt.<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>self notify: 'Illegal character (char code ' , hereChar charCode , ' 16r' , hereChar charCode hex , ')' at: mark<br class=""><br class="">But if I inspect Character nbsp I get a character 160 that seems to work fine.<br class=""><br class="">Here is the stack.  I added a halt in xIllegal.<br class="">'11 September 2018 11:30:40.486 am<br class=""><br class="">VM: Win32 - Smalltalk<br class="">Image: Squeak4.1 [latest update: #9957]<br class=""><br class="">Parser(Object)>>halt<br class=""><span class="Apple-tab-span" style="white-space:pre"> </span>Receiver: a Parser<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Arguments and temporary variables: <br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">  </span>Receiver''s instance variables: <br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>source: <span class="Apple-tab-span" style="white-space:pre">       </span>a ReadWriteStream<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>mark: <span class="Apple-tab-span" style="white-space:pre"> </span>22<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>hereChar: <span class="Apple-tab-span" style="white-space:pre">     </span>$ <br class=""><span class="Apple-tab-span" style="white-space:pre">                </span>aheadChar: <span class="Apple-tab-span" style="white-space:pre">    </span>Character value: 30<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>token: <span class="Apple-tab-span" style="white-space:pre">        </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>tokenType: <span class="Apple-tab-span" style="white-space:pre">    </span>#xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>currentComment: <span class="Apple-tab-span" style="white-space:pre">       </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>buffer: <span class="Apple-tab-span" style="white-space:pre">       </span>a WriteStream ''''<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>typeTable: <span class="Apple-tab-span" style="white-space:pre">    </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...<br class=""><span class="Apple-tab-span" style="white-space:pre">         </span>here: <span class="Apple-tab-span" style="white-space:pre"> </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereType: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>encoder: <span class="Apple-tab-span" style="white-space:pre">      </span>{an EncoderForV3PlusClosures}<br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>requestor: <span class="Apple-tab-span" style="white-space:pre">    </span>a SmalltalkEditor<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>parseNode: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>failBlock: <span class="Apple-tab-span" style="white-space:pre">    </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>requestorOffset: <span class="Apple-tab-span" style="white-space:pre">      </span>0<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>tempsMark: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>doitFlag: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>properties: <span class="Apple-tab-span" style="white-space:pre">   </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>category: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><br class="">Parser(Scanner)>>xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">   </span>Receiver: a Parser<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Arguments and temporary variables: <br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">  </span>Receiver''s instance variables: <br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>source: <span class="Apple-tab-span" style="white-space:pre">       </span>a ReadWriteStream<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>mark: <span class="Apple-tab-span" style="white-space:pre"> </span>22<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>hereChar: <span class="Apple-tab-span" style="white-space:pre">     </span>$ <br class=""><span class="Apple-tab-span" style="white-space:pre">                </span>aheadChar: <span class="Apple-tab-span" style="white-space:pre">    </span>Character value: 30<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>token: <span class="Apple-tab-span" style="white-space:pre">        </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>tokenType: <span class="Apple-tab-span" style="white-space:pre">    </span>#xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>currentComment: <span class="Apple-tab-span" style="white-space:pre">       </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>buffer: <span class="Apple-tab-span" style="white-space:pre">       </span>a WriteStream ''''<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>typeTable: <span class="Apple-tab-span" style="white-space:pre">    </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...<br class=""><span class="Apple-tab-span" style="white-space:pre">         </span>here: <span class="Apple-tab-span" style="white-space:pre"> </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereType: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>encoder: <span class="Apple-tab-span" style="white-space:pre">      </span>{an EncoderForV3PlusClosures}<br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>requestor: <span class="Apple-tab-span" style="white-space:pre">    </span>a SmalltalkEditor<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>parseNode: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>failBlock: <span class="Apple-tab-span" style="white-space:pre">    </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>requestorOffset: <span class="Apple-tab-span" style="white-space:pre">      </span>0<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>tempsMark: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>doitFlag: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>properties: <span class="Apple-tab-span" style="white-space:pre">   </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>category: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><br class="">Parser(Scanner)>>scanToken<br class=""><span class="Apple-tab-span" style="white-space:pre">  </span>Receiver: a Parser<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Arguments and temporary variables: <br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">  </span>Receiver''s instance variables: <br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>source: <span class="Apple-tab-span" style="white-space:pre">       </span>a ReadWriteStream<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>mark: <span class="Apple-tab-span" style="white-space:pre"> </span>22<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>hereChar: <span class="Apple-tab-span" style="white-space:pre">     </span>$ <br class=""><span class="Apple-tab-span" style="white-space:pre">                </span>aheadChar: <span class="Apple-tab-span" style="white-space:pre">    </span>Character value: 30<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>token: <span class="Apple-tab-span" style="white-space:pre">        </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>tokenType: <span class="Apple-tab-span" style="white-space:pre">    </span>#xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>currentComment: <span class="Apple-tab-span" style="white-space:pre">       </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>buffer: <span class="Apple-tab-span" style="white-space:pre">       </span>a WriteStream ''''<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>typeTable: <span class="Apple-tab-span" style="white-space:pre">    </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...<br class=""><span class="Apple-tab-span" style="white-space:pre">         </span>here: <span class="Apple-tab-span" style="white-space:pre"> </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereType: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>encoder: <span class="Apple-tab-span" style="white-space:pre">      </span>{an EncoderForV3PlusClosures}<br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>requestor: <span class="Apple-tab-span" style="white-space:pre">    </span>a SmalltalkEditor<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>parseNode: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>failBlock: <span class="Apple-tab-span" style="white-space:pre">    </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>requestorOffset: <span class="Apple-tab-span" style="white-space:pre">      </span>0<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>tempsMark: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>doitFlag: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>properties: <span class="Apple-tab-span" style="white-space:pre">   </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>category: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><br class="">Parser(Scanner)>>scan:<br class=""><span class="Apple-tab-span" style="white-space:pre">      </span>Receiver: a Parser<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Arguments and temporary variables: <br class=""><span class="Apple-tab-span" style="white-space:pre">               </span>inputStream: <span class="Apple-tab-span" style="white-space:pre">  </span>a ReadWriteStream<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre"> </span>Receiver''s instance variables: <br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>source: <span class="Apple-tab-span" style="white-space:pre">       </span>a ReadWriteStream<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>mark: <span class="Apple-tab-span" style="white-space:pre"> </span>22<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>hereChar: <span class="Apple-tab-span" style="white-space:pre">     </span>$ <br class=""><span class="Apple-tab-span" style="white-space:pre">                </span>aheadChar: <span class="Apple-tab-span" style="white-space:pre">    </span>Character value: 30<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>token: <span class="Apple-tab-span" style="white-space:pre">        </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>tokenType: <span class="Apple-tab-span" style="white-space:pre">    </span>#xIllegal<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>currentComment: <span class="Apple-tab-span" style="white-space:pre">       </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>buffer: <span class="Apple-tab-span" style="white-space:pre">       </span>a WriteStream ''''<br class=""><span class="Apple-tab-span" style="white-space:pre">             </span>typeTable: <span class="Apple-tab-span" style="white-space:pre">    </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...<br class=""><span class="Apple-tab-span" style="white-space:pre">         </span>here: <span class="Apple-tab-span" style="white-space:pre"> </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereType: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>hereEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevMark: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>prevEnd: <span class="Apple-tab-span" style="white-space:pre">      </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>encoder: <span class="Apple-tab-span" style="white-space:pre">      </span>{an EncoderForV3PlusClosures}<br class=""><span class="Apple-tab-span" style="white-space:pre">          </span>requestor: <span class="Apple-tab-span" style="white-space:pre">    </span>a SmalltalkEditor<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>parseNode: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>failBlock: <span class="Apple-tab-span" style="white-space:pre">    </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>requestorOffset: <span class="Apple-tab-span" style="white-space:pre">      </span>0<br class=""><span class="Apple-tab-span" style="white-space:pre">              </span>tempsMark: <span class="Apple-tab-span" style="white-space:pre">    </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>doitFlag: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>properties: <span class="Apple-tab-span" style="white-space:pre">   </span>nil<br class=""><span class="Apple-tab-span" style="white-space:pre">            </span>category: <span class="Apple-tab-span" style="white-space:pre">     </span>nil<br class=""><br class=""><br class="">--- The full stack ---<br class="">Parser(Object)>>halt<br class="">Parser(Scanner)>>xIllegal<br class="">Parser(Scanner)>>scanToken<br class="">Parser(Scanner)>>scan:<br class=""> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br class="">Parser>>init:notifying:failBlock:<br class="">Parser>>parse:class:category:noPattern:context:notifying:ifFail:<br class="">Compiler>>translate:noPattern:ifFail:<br class="">Compiler>>evaluate:in:to:notifying:ifFail:logged:<br class="">[] in SmalltalkEditor(TextEditor)>>evaluateSelection<br class="">BlockClosure>>on:do:<br class="">SmalltalkEditor(TextEditor)>>evaluateSelection<br class="">[] in PluggableTextMorphPlus(PluggableTextMorph)>>inspectIt<br class="">...etc...<br class=""><br class="">And to top it off if I inspect hereChar on xIllegal in the debugger I get a char 160 that works fine!<br class=""><br class="">I'm not sure how to determine what exactly what is the difference between the two characters.  Any suggestions?<br class=""><br class="">Thanks!<br class=""><br class="">All the best,<br class=""><br class="">Ron Teitelbaum <br class=""><br class=""></blockquote><br class=""></div></body></html>