<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 18, 2013 at 6:11 PM, Faré <span dir="ltr"><<a href="mailto:fahree@gmail.com" target="_blank">fahree@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div><br></div>I'm curious about what happens to string with non-latin1 characters in them:<br>
do they cause the loading to abort, or are they interned as string<br>
with different lengths<br>
depending on the unicode support? (Similarly for latin1 strings that<br>
are malformed as utf-8.)</blockquote><div><br></div><div><br></div><div>For attached file unicode.lisp:</div><div><br></div><div>on Linux:</div><div><br></div><div>In mlisp:</div><div>=======</div><div><div>cl-user> (excl:locale-external-format excl:*locale*)</div>
<div>#<external-format :utf8 [(crlf-base-ef :utf8)] @ #x2013f322></div></div><div><div>cl-user> (load (compile-file "/tmp/unicode.lisp"))</div>
<div>;;; Compiling file /tmp/unicode.lisp</div><div>;;; Writing fasl file /tmp/unicode.fasl</div><div>;;; Fasl write complete</div><div>; Fast loading /tmp/unicode.fasl</div><div>t</div><div>cl-user> *ch-string*</div>
<div>
"选项"</div><div>cl-user> (aref *ch-string* 0)</div><div>#\选</div><div>cl-user> (aref *ch-string* 1)</div><div>#\项</div><div>cl-user> (char-code (aref *ch-string* 0))</div><div>36873</div><div>cl-user> (char-code (aref *ch-string* 1))</div>

<div>39033</div><div>cl-user> </div></div><div><br></div><div><br></div><div><br></div><div>then in alisp8:</div><div>============ </div><div>CL-USER> (excl:locale-external-format excl:*locale*)<br></div><div>#<EXTERNAL-FORMAT :LATIN1 [(CRLF-BASE-EF :LATIN1)] @ #x20094152></div>
<div>CL-USER> (load "/tmp/unicode.fasl")<br></div><div><div>
; Fast loading /tmp/unicode.fasl</div><div>T</div><div>CL-USER> *ch-string*</div><div>"??"</div><div>CL-USER> (aref *ch-string* 0)</div><div>#\?</div><div>CL-USER> (aref *ch-string* 1)</div><div>#\?</div>

<div>CL-USER> (char-code (aref *ch-string* 0))</div><div>63</div><div>CL-USER> (char-code (aref *ch-string* 1))</div><div>63</div><div>CL-USER> (char-code (aref *ch-string* 2))</div><div>; Evaluation aborted on #<TYPE-ERROR @ #x224ad05a>.</div>

<div>CL-USER> (load (compile-file "/tmp/unicode.lisp"))<br></div><div>;;; Compiling file /tmp/unicode.lisp</div><div>;;; Writing fasl file /tmp/unicode.fasl</div><div>;;; Fasl write complete</div><div>; Fast loading /tmp/unicode.fasl</div>

<div>T</div><div>CL-USER> *ch-string*</div><div>"选项"</div><div>CL-USER> (aref *ch-string* 0)</div><div>#\é</div><div>CL-USER> (aref *ch-string* 1)</div><div>#\%null</div><div>CL-USER> (aref *ch-string* 2)</div>

<div>#\%tab</div><div>CL-USER> (aref *ch-string* 3)</div><div>#\é</div><div>CL-USER> (aref *ch-string* 4)</div><div>#\¡</div><div>CL-USER> (aref *ch-string* 5)</div><div>#\¹</div><div>CL-USER> (aref *ch-string* 6)</div>

<div>; Evaluation aborted on #<TYPE-ERROR @ #x220d29f2>.</div><div>CL-USER> (char-code (aref *ch-string* 0))</div><div>233</div><div>CL-USER> (char-code (aref *ch-string* 1))</div><div>128</div><div>CL-USER> (char-code (aref *ch-string* 2))</div>

<div>137</div><div>CL-USER> (char-code (aref *ch-string* 3))</div><div>233</div><div>CL-USER> (char-code (aref *ch-string* 4))</div><div>161</div><div>CL-USER> (char-code (aref *ch-string* 5))</div><div>185</div>

</div><div><br></div><div><br></div><div>On Windows:</div><div><br></div><div>in mlisp:</div><div>=======</div><div><br></div><div><div>cl-user> (excl:locale-external-format excl:*locale*)</div><div>#<external-format :|1252| ['(:e-crlf :1252-base)] @ #x202bda2a></div>
</div><div><div>cl-user> (load (compile-file "~/genworks/tmp/unicode.lisp" :external-format :utf-8))</div><div>;;; Compiling file C:\Users\dcooper8\genworks\tmp\unicode.lisp</div><div>;;; Writing fasl file C:\Users\dcooper8\genworks\tmp\unicode.fasl</div>
<div>;;; Fasl write complete</div><div>; Fast loading C:\Users\dcooper8\genworks\tmp\unicode.fasl</div><div>t</div></div><div><br></div><div><br></div><div>;;;</div><div>;;;</div><div>;;;</div><div>;;  The rest is the same as Linux -- but note that on Windows you have to </div>
<div>;;  say (compile-file ... :external-format :utf-8), because the default</div><div>;;  external-format is '(:e-crlf :1252-base) while on Linux it's already </div><div>;; (crlf-base-ef :utf8)  (at least in my locale). </div>
<div>;;</div><div><br></div><div><br></div><div><br></div><div>I'm not sure how to make a latin1 string which is malformed as utf-8. <br></div><div><br></div><div><br></div><div><br></div><div>-- <br></div></div>My Best,<br>
<br>Dave Cooper, Genworks Support<br>
<a href="mailto:david.cooper@genworks.com" target="_blank">david.cooper@genworks.com</a>, <a href="http://dave.genworks.com" target="_blank">dave.genworks.com</a>(skype)<br><br>
</div></div>