<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi All,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I ran into this problem.  Has anyone seen this before?  </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">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/">http://www.adamkoch.com/2009/07/25/white-space-and-character-160/</a> says this is a non-breaking space.  </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I pasted the character into Squeak. When trying to inspect it in squeak I get illegal character.  </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default">Illegal character (char code 160 16r16rA0) -><br></div><div class="gmail_default"><br></div><div class="gmail_default">The 16r16r seems to be an error in the method and not a real number</div><div class="gmail_default"><br></div><div class="gmail_default"><div class="gmail_default">xIllegal</div><div class="gmail_default"><span style="white-space:pre">     </span>"An illegal character was encountered"</div><div class="gmail_default"><span style="white-space:pre">      </span>self halt.</div><div class="gmail_default"><span style="white-space:pre">    </span>self notify: 'Illegal character (char code ' , hereChar charCode , <b>' 16r'</b> , hereChar charCode hex , ')' at: mark</div></div><div class="gmail_default"><br></div><div class="gmail_default">But if I inspect Character nbsp I get a character 160 that seems to work fine.</div><div class="gmail_default"><br></div><div class="gmail_default">Here is the stack.  I added a halt in xIllegal.</div><div class="gmail_default"><div class="gmail_default">'11 September 2018 11:30:40.486 am</div><div class="gmail_default"><br></div><div class="gmail_default">VM: Win32 - Smalltalk</div><div class="gmail_default">Image: Squeak4.1 [latest update: #9957]</div><div class="gmail_default"><br></div><div class="gmail_default">Parser(Object)>>halt</div><div class="gmail_default"><span style="white-space:pre">    </span>Receiver: a Parser</div><div class="gmail_default"><span style="white-space:pre">    </span>Arguments and temporary variables: </div><div class="gmail_default"><br></div><div class="gmail_default"><span style="white-space:pre"> </span>Receiver''s instance variables: </div><div class="gmail_default"><span style="white-space:pre">             </span>source: <span style="white-space:pre">     </span>a ReadWriteStream</div><div class="gmail_default"><span style="white-space:pre">             </span>mark: <span style="white-space:pre">       </span>22</div><div class="gmail_default"><span style="white-space:pre">            </span>hereChar: <span style="white-space:pre">   </span>$ </div><div class="gmail_default"><span style="white-space:pre">           </span>aheadChar: <span style="white-space:pre">  </span>Character value: 30</div><div class="gmail_default"><span style="white-space:pre">           </span>token: <span style="white-space:pre">      </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>tokenType: <span style="white-space:pre">  </span>#xIllegal</div><div class="gmail_default"><span style="white-space:pre">             </span>currentComment: <span style="white-space:pre">     </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>buffer: <span style="white-space:pre">     </span>a WriteStream ''''</div><div class="gmail_default"><span style="white-space:pre">            </span>typeTable: <span style="white-space:pre">  </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...</div><div class="gmail_default"><span style="white-space:pre">             </span>here: <span style="white-space:pre">       </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereType: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>encoder: <span style="white-space:pre">    </span>{an EncoderForV3PlusClosures}</div><div class="gmail_default"><span style="white-space:pre">         </span>requestor: <span style="white-space:pre">  </span>a SmalltalkEditor</div><div class="gmail_default"><span style="white-space:pre">             </span>parseNode: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>failBlock: <span style="white-space:pre">  </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:</div><div class="gmail_default"><span style="white-space:pre">           </span>requestorOffset: <span style="white-space:pre">    </span>0</div><div class="gmail_default"><span style="white-space:pre">             </span>tempsMark: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>doitFlag: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>properties: <span style="white-space:pre"> </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>category: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><br></div><div class="gmail_default">Parser(Scanner)>>xIllegal</div><div class="gmail_default"><span style="white-space:pre">    </span>Receiver: a Parser</div><div class="gmail_default"><span style="white-space:pre">    </span>Arguments and temporary variables: </div><div class="gmail_default"><br></div><div class="gmail_default"><span style="white-space:pre"> </span>Receiver''s instance variables: </div><div class="gmail_default"><span style="white-space:pre">             </span>source: <span style="white-space:pre">     </span>a ReadWriteStream</div><div class="gmail_default"><span style="white-space:pre">             </span>mark: <span style="white-space:pre">       </span>22</div><div class="gmail_default"><span style="white-space:pre">            </span>hereChar: <span style="white-space:pre">   </span>$ </div><div class="gmail_default"><span style="white-space:pre">           </span>aheadChar: <span style="white-space:pre">  </span>Character value: 30</div><div class="gmail_default"><span style="white-space:pre">           </span>token: <span style="white-space:pre">      </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>tokenType: <span style="white-space:pre">  </span>#xIllegal</div><div class="gmail_default"><span style="white-space:pre">             </span>currentComment: <span style="white-space:pre">     </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>buffer: <span style="white-space:pre">     </span>a WriteStream ''''</div><div class="gmail_default"><span style="white-space:pre">            </span>typeTable: <span style="white-space:pre">  </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...</div><div class="gmail_default"><span style="white-space:pre">             </span>here: <span style="white-space:pre">       </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereType: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>encoder: <span style="white-space:pre">    </span>{an EncoderForV3PlusClosures}</div><div class="gmail_default"><span style="white-space:pre">         </span>requestor: <span style="white-space:pre">  </span>a SmalltalkEditor</div><div class="gmail_default"><span style="white-space:pre">             </span>parseNode: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>failBlock: <span style="white-space:pre">  </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:</div><div class="gmail_default"><span style="white-space:pre">           </span>requestorOffset: <span style="white-space:pre">    </span>0</div><div class="gmail_default"><span style="white-space:pre">             </span>tempsMark: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>doitFlag: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>properties: <span style="white-space:pre"> </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>category: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><br></div><div class="gmail_default">Parser(Scanner)>>scanToken</div><div class="gmail_default"><span style="white-space:pre">   </span>Receiver: a Parser</div><div class="gmail_default"><span style="white-space:pre">    </span>Arguments and temporary variables: </div><div class="gmail_default"><br></div><div class="gmail_default"><span style="white-space:pre"> </span>Receiver''s instance variables: </div><div class="gmail_default"><span style="white-space:pre">             </span>source: <span style="white-space:pre">     </span>a ReadWriteStream</div><div class="gmail_default"><span style="white-space:pre">             </span>mark: <span style="white-space:pre">       </span>22</div><div class="gmail_default"><span style="white-space:pre">            </span>hereChar: <span style="white-space:pre">   </span>$ </div><div class="gmail_default"><span style="white-space:pre">           </span>aheadChar: <span style="white-space:pre">  </span>Character value: 30</div><div class="gmail_default"><span style="white-space:pre">           </span>token: <span style="white-space:pre">      </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>tokenType: <span style="white-space:pre">  </span>#xIllegal</div><div class="gmail_default"><span style="white-space:pre">             </span>currentComment: <span style="white-space:pre">     </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>buffer: <span style="white-space:pre">     </span>a WriteStream ''''</div><div class="gmail_default"><span style="white-space:pre">            </span>typeTable: <span style="white-space:pre">  </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...</div><div class="gmail_default"><span style="white-space:pre">             </span>here: <span style="white-space:pre">       </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereType: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>encoder: <span style="white-space:pre">    </span>{an EncoderForV3PlusClosures}</div><div class="gmail_default"><span style="white-space:pre">         </span>requestor: <span style="white-space:pre">  </span>a SmalltalkEditor</div><div class="gmail_default"><span style="white-space:pre">             </span>parseNode: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>failBlock: <span style="white-space:pre">  </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:</div><div class="gmail_default"><span style="white-space:pre">           </span>requestorOffset: <span style="white-space:pre">    </span>0</div><div class="gmail_default"><span style="white-space:pre">             </span>tempsMark: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>doitFlag: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>properties: <span style="white-space:pre"> </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>category: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><br></div><div class="gmail_default">Parser(Scanner)>>scan:</div><div class="gmail_default"><span style="white-space:pre">       </span>Receiver: a Parser</div><div class="gmail_default"><span style="white-space:pre">    </span>Arguments and temporary variables: </div><div class="gmail_default"><span style="white-space:pre">          </span>inputStream: <span style="white-space:pre">        </span>a ReadWriteStream</div><div class="gmail_default"><br></div><div class="gmail_default"><span style="white-space:pre">    </span>Receiver''s instance variables: </div><div class="gmail_default"><span style="white-space:pre">             </span>source: <span style="white-space:pre">     </span>a ReadWriteStream</div><div class="gmail_default"><span style="white-space:pre">             </span>mark: <span style="white-space:pre">       </span>22</div><div class="gmail_default"><span style="white-space:pre">            </span>hereChar: <span style="white-space:pre">   </span>$ </div><div class="gmail_default"><span style="white-space:pre">           </span>aheadChar: <span style="white-space:pre">  </span>Character value: 30</div><div class="gmail_default"><span style="white-space:pre">           </span>token: <span style="white-space:pre">      </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>tokenType: <span style="white-space:pre">  </span>#xIllegal</div><div class="gmail_default"><span style="white-space:pre">             </span>currentComment: <span style="white-space:pre">     </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>buffer: <span style="white-space:pre">     </span>a WriteStream ''''</div><div class="gmail_default"><span style="white-space:pre">            </span>typeTable: <span style="white-space:pre">  </span>#(#xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xIllegal #xDelimiter #xDelimiter #xIllegal #xDelimiter #xDelimiter #xIllegal #xIllegal #xIllega...etc...</div><div class="gmail_default"><span style="white-space:pre">             </span>here: <span style="white-space:pre">       </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereType: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>hereEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevMark: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>prevEnd: <span style="white-space:pre">    </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>encoder: <span style="white-space:pre">    </span>{an EncoderForV3PlusClosures}</div><div class="gmail_default"><span style="white-space:pre">         </span>requestor: <span style="white-space:pre">  </span>a SmalltalkEditor</div><div class="gmail_default"><span style="white-space:pre">             </span>parseNode: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>failBlock: <span style="white-space:pre">  </span>[closure] in Parser>>parse:class:category:noPattern:context:notifying:ifFail:</div><div class="gmail_default"><span style="white-space:pre">           </span>requestorOffset: <span style="white-space:pre">    </span>0</div><div class="gmail_default"><span style="white-space:pre">             </span>tempsMark: <span style="white-space:pre">  </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>doitFlag: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>properties: <span style="white-space:pre"> </span>nil</div><div class="gmail_default"><span style="white-space:pre">           </span>category: <span style="white-space:pre">   </span>nil</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">--- The full stack ---</div><div class="gmail_default">Parser(Object)>>halt</div><div class="gmail_default">Parser(Scanner)>>xIllegal</div><div class="gmail_default">Parser(Scanner)>>scanToken</div><div class="gmail_default">Parser(Scanner)>>scan:</div><div class="gmail_default"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</div><div class="gmail_default">Parser>>init:notifying:failBlock:</div><div class="gmail_default">Parser>>parse:class:category:noPattern:context:notifying:ifFail:</div><div class="gmail_default">Compiler>>translate:noPattern:ifFail:</div><div class="gmail_default">Compiler>>evaluate:in:to:notifying:ifFail:logged:</div><div class="gmail_default">[] in SmalltalkEditor(TextEditor)>>evaluateSelection</div><div class="gmail_default">BlockClosure>>on:do:</div><div class="gmail_default">SmalltalkEditor(TextEditor)>>evaluateSelection</div><div class="gmail_default">[] in PluggableTextMorphPlus(PluggableTextMorph)>>inspectIt</div><div class="gmail_default">...etc...</div></div><div class="gmail_default"><br></div><div class="gmail_default">And to top it off if I inspect hereChar on xIllegal in the debugger I get a char 160 that works fine!</div><div class="gmail_default"><br></div><div class="gmail_default">I'm not sure how to determine what exactly what is the difference between the two characters.  Any suggestions?</div><div class="gmail_default"><br></div><div class="gmail_default">Thanks!</div><div class="gmail_default"><br></div><div class="gmail_default">All the best,</div><div class="gmail_default"><br></div><div class="gmail_default">Ron Teitelbaum </div></div></div></div></div></div></div>