<div dir="ltr"><div class="gmail-gE gmail-iv gmail-gt" style="font-size:0.875rem;padding:20px 0px 0px;font-family:"Google Sans",Roboto,RobotoDraft,Helvetica,Arial,sans-serif"><table cellpadding="0" class="gmail-cf gmail-gJ" style="border-collapse:collapse;margin-top:0px;width:auto;font-size:0.875rem;display:block"><tbody style="display:block"><tr class="gmail-acZ" style="height:auto;display:flex"><td class="gmail-gF gmail-gK" style="white-space:nowrap;padding:0px;vertical-align:top;width:714.625px;line-height:20px;display:block;max-height:20px"><table cellpadding="0" class="gmail-cf gmail-ix" style="border-collapse:collapse;table-layout:fixed;width:714.625px"><tbody><tr><td class="gmail-c2" style="display:flex"><h3 class="gmail-iw gmail-gFxsud" style="overflow:hidden;font-size:0.75rem;font-weight:inherit;margin:inherit;text-overflow:ellipsis;color:rgb(95,99,104);line-height:20px"><span class="gmail-qu gmail-yKyxu" role="gridcell" tabindex="-1" style="font-variant-ligatures:no-contextual;font-feature-settings:"liga" 0"><span name="olivier auverlot" class="gmail-gD" id="gmail-avWBGd-83" style="color:rgb(31,31,31);font-size:0.875rem;font-weight:bold;display:inline;vertical-align:top;line-height:20px"><span style="vertical-align:top"><br class="gmail-Apple-interchange-newline">olivier auverlot</span></span><span class="gmail-cfXrwd"></span></span></h3><h3 class="gmail-iw gmail-rapwed" style="overflow:hidden;font-size:0.75rem;font-weight:inherit;margin:inherit;text-overflow:ellipsis;color:rgb(95,99,104);line-height:20px"></h3></td></tr></tbody></table></td><td class="gmail-gH gmail-VYc0jb" style="text-align:right;white-space:nowrap;vertical-align:top;max-height:20px;display:flex"><div class="gmail-gK" style="padding:0px;display:flex"><span id="gmail-avWBGd-84"></span><span class="gmail-g3" title="5 janv. 2026 20:33" alt="5 janv. 2026 20:33" role="gridcell" tabindex="-1" id="gmail-avWBGd-85" style="vertical-align:top;margin:0px;font-size:0.75rem;color:rgb(94,94,94);display:block;line-height:20px"><span id="gmail-avWBGd-86">20:33 (il y a 0 minute)</span></span><div class="gmail-jvIjkd" id="gmail-avWBGd-87" style="line-height:0;height:20px;margin-left:10px;padding:10px;text-align:center;width:20px"><div tabindex="0" role="checkbox" aria-checked="false" aria-label="Non suivi" class="gmail-zd gmail-SKW8Ab" id="gmail-avWBGd-88" style="display:inline-block;height:20px;outline:0px"><span class="gmail-T-KT" id="gmail-avWBGd-89" style="display:inline-flex;height:20px;width:20px;padding:0px;margin:0px;border:medium;outline:currentcolor"></span></div></div></div></td><td class="gmail-gH" style="text-align:right;white-space:nowrap;vertical-align:top;display:flex"></td><td class="gmail-gH gmail-acX gmail-bAm gmail-VN9Psd" rowspan="2" id="gmail-avWBGd-90" style="text-align:right;white-space:nowrap;vertical-align:top;display:inline-flex;max-height:20px"><div class="gmail-X92YGb" id="gmail-avWBGd-91"><button class="gmail-pYTkkf-JX-I gmail-pYTkkf-JX-I-ql-ay5-ays gmail-R1Zuwf" id="gmail-sjs_12" aria-label="Vous ne pouvez pas réagir avec un emoji à un groupe" disabled style="background-image:none;background-position:0% 0%;background-size:auto;background-repeat:repeat;background-origin:padding-box;background-clip:border-box;border-width:medium;border-style:none;border-color:currentcolor;display:inline-flex;line-height:inherit;outline:currentcolor"></button></div><button class="gmail-pYTkkf-JX-I gmail-pYTkkf-JX-I-ql-ay5-ays gmail-DILLkc" id="gmail-sjs_13" aria-label="Répondre" style="background-image:none;background-position:0% 0%;background-size:auto;background-repeat:repeat;background-origin:padding-box;background-clip:border-box;border-width:medium;border-style:none;border-color:currentcolor;display:inline-flex;line-height:inherit;outline:currentcolor"></button><div id="gmail-sjs_15" class="gmail-tB5Jxf-M-X-ql-Jf" aria-labelledby="qhu9y" style="overflow:visible"><div><button class="gmail-pYTkkf-JX-I gmail-pYTkkf-JX-I-ql-ay5-ays gmail-Wsq5Cf" aria-label="Plus d'options pour le message" id="gmail-qhu9y" style="background-image:none;background-position:0% 0%;background-size:auto;background-repeat:repeat;background-origin:padding-box;background-clip:border-box;border-width:medium;border-style:none;border-color:currentcolor;display:inline-flex;line-height:inherit;outline:currentcolor"></button></div><div></div></div></td></tr><tr class="gmail-acZ gmail-xD" style="height:auto;display:flex"><td colspan="3" id="gmail-avWBGd-93"><table cellpadding="0" class="gmail-cf gmail-adz" style="border-collapse:collapse;table-layout:fixed;white-space:nowrap;width:992px"><tbody><tr><td class="gmail-ady" style="overflow:visible;text-overflow:ellipsis;display:flex;line-height:20px"><div class="gmail-iw gmail-ajw" id="gmail-avWBGd-94" style="overflow:hidden;max-width:92%;display:inline-block"><span class="gmail-hb" style="vertical-align:top;color:rgb(94,94,94);font-size:0.75rem;line-height:20px">À<span class="gmail-Apple-converted-space"> </span><span name="Hirzel" class="gmail-g2" style="vertical-align:top">Hirzel</span></span></div><div aria-haspopup="true" class="gmail-ajy" role="button" tabindex="0" id="gmail-avWBGd-95" aria-label="Afficher les détails" style="display:inline-flex;margin-left:4px;vertical-align:top;border:medium;outline:currentcolor"><img class="gmail-ajz" src="images/cleardot.gif" alt="" style="background-image: url("https://www.gstatic.com/images/icons/material/system_gm/2x/arrow_drop_down_black_20dp.png"); background-position: center center; background-size: 20px auto; background-repeat: no-repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; cursor: pointer; padding: 0px; vertical-align: baseline; height: 20px; width: 20px; border: medium; margin: 0px 0px 0px auto; right: 0px; top: 0px; display: flex; opacity: 0.71;"></div></td></tr></tbody></table></td></tr></tbody></table></div><div id="gmail-:1dx" style="font-family:"Google Sans",Roboto,RobotoDraft,Helvetica,Arial,sans-serif"><div id="gmail-:1dw"><div class="gmail-KKSLrd"></div><div class="gmail-qQVYZb"></div></div><div class="gmail-utdU2e" id="gmail-avWBGd-96"></div><div class="gmail-wl4W9b" style="display:flex"></div></div><div class="gmail-" style="font-family:"Google Sans",Roboto,RobotoDraft,Helvetica,Arial,sans-serif"><div class="gmail-aHl" id="gmail-avWBGd-97" style=""></div><div id="gmail-:1dm" tabindex="-1"></div><div class="gmail-ii gmail-gt gmail-adO" id="gmail-:1du" style="direction:ltr;margin:8px 0px 0px;padding:0px;font-size:0.875rem;overflow-x:hidden"><div id="gmail-:1dv" class="gmail-a3s gmail-aiL" style="direction:ltr;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif;font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal;overflow:auto hidden"><div dir="ltr">Hi Hannes, hi Juan,<div><br></div><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px">Thank you for your help. </span></div><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px"><br></span></div><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px">I will try to correct the problem based on the information you provided. I also need database support for a project I would like to do with Cuis Smalltalk. I think it's really important to have a library for using databases, and this would allow Cuis Smalltalk to be an incredible tool for building enterprise applications.</span><br></div><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px"><br></span></div><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px">Best regards</span></div><font color="#888888"><div><span style="white-space:break-spaces;font-family:DuckSansProduct,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;font-size:16.457142px;letter-spacing:0.072px">Olivier</span></div></font></div></div></div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">Le lun. 5 janv. 2026 à 04:51, H. Hirzel <<a href="mailto:hannes.hirzel@gmail.com">hannes.hirzel@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi Olivier, hi Juan<br>
<br>
I think noteworthy is that UFT8 and ASCII are the same for the first 127 <br>
code points.<br>
<br>
<a href="https://www.unicode.org/charts/PDF/U0000.pdf" rel="noreferrer" target="_blank">https://www.unicode.org/charts/PDF/U0000.pdf</a><br>
<br>
This explains that the ToDo example of Martin Volkman worked fine.<br>
<br>
<a href="https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/?v=1.1.1" rel="noreferrer" target="_blank">https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/?v=1.1.1</a><br>
<br>
My guess is as Juan writes that the package <br>
<a href="https://github.com/Cuis-Smalltalk/DatabaseSupport" rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/DatabaseSupport</a> currently has no <br>
maintainer that it probably has never been tested for Non-ASCII and <br>
Unicode in general. What you, Olivier, are actually now doing .... with <br>
characters from the second Unicode block<br>
<br>
<a href="https://www.unicode.org/charts/PDF/U0080.pdf" rel="noreferrer" target="_blank">https://www.unicode.org/charts/PDF/U0080.pdf</a> (second Unicode code block)<br>
<br>
<a href="https://en.wikipedia.org/wiki/Latin-1_Supplement#Compact_table" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Latin-1_Supplement#Compact_table</a><br>
<br>
In my earlier mail I wrote about ANSI (as imprecise short for <br>
<a href="https://en.wikipedia.org/wiki/Windows-1252" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Windows-1252</a>). That was not correct as <br>
that would be a superset of the character inventory of these two code <br>
blocks (some control characters swapped for other characters).<br>
<br>
To conclude: the fix Juan proposes<br>
<br>
UnicodeString fromUtf8Bytes: (buffer copyFrom: 1 to: len<br>
<br>
should do the job.<br>
<br>
(UnicodeString fromUtf8Bytes: #[195 169] ) 'é' .<br>
<br>
Looking forward to see an update on this because I also would like to <br>
use database connectivity this year ....<br>
<br>
Kind regards<br>
<br>
Hannes<br>
<br>
<br>
On 02/01/2026 9:20 pm, Juan Vuletich wrote:<br>
> Hi Olivier,<br>
><br>
> It looks like you're getting UTF-8 bytes for Unicode, and the ODBC <br>
> package is turning them into a (Byte)String. Take a look at the <br>
> attach. This is my take on how a UnicodeString should be created instead.<br>
><br>
> I'm not aware of anyone using or maintaining that package right now. I <br>
> can not actually test it, as I don't have any ODBC data source on my <br>
> machine. But the protocols in Cuis for creating UnicodeString from <br>
> UTF-8 bytes, and extracting the UTF-8 bytes from a <br>
> String/UnicodeString (to save to the database) are pretty <br>
> straightforward, as shown in the attach.<br>
><br>
> If you can fix the problem, and test that the fix works, we can <br>
> integrate your contribution to the package, so it will help others in <br>
> the future.<br>
><br>
> Thanks!<br>
><br>
> On 2025-12-30 7:17 PM, H. Hirzel via Cuis-dev wrote:<br>
>> Hi Olivier<br>
>><br>
>> A contribution towards an answer: yes it is an encoding issue.<br>
>><br>
>> If I use Notepad++<br>
>><br>
>> type<br>
>><br>
>> invité<br>
>><br>
>> (encoding is UTF8 there by default) and then choose ANSI in the <br>
>> 'encoding' menu I get what you mention:<br>
>><br>
>> 'invité'.<br>
>><br>
>> However how to do this in Cuis I have not yet managed to do. I guess <br>
>> there is a wayto tell the database driver that you want UTF8. That <br>
>> should actually be the default if things are fine.<br>
>><br>
>> --Hannes<br>
>><br>
>> On 29/12/2025 10:40 am, olivier auverlot via Cuis-dev wrote:<br>
>>> Hi,<br>
>>><br>
>>> I am trying to use the ODBC package for Cuis Smalltalk. I used the <br>
>>> documentation by Mark Volkmann <br>
>>> (<a href="https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/?v=1.1.1" rel="noreferrer" target="_blank">https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/?v=1.1.1</a>). <br>
>>> Thank you, Mark, for your tutorial!<br>
>>><br>
>>> I'm connecting to a PostgreSQL database but I'm having an issue with <br>
>>> French accented characters. For example, instead of 'Invité', I get <br>
>>> the string 'invité'.<br>
>>><br>
>>> I suspect an encoding issue, although I'm using the psqlodbcw.so <br>
>>> library which supports Unicode.<br>
>>><br>
>>> Does anyone have experience with this ODBC package and can help me <br>
>>> resolve this issue?<br>
>>><br>
>>> Best regards<br>
>>> Olivier<br>
>>><br>
</blockquote></div>