Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #75987

Re: Is wchar_t really useful?

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: Is wchar_t really useful?
Date 2015-11-13 17:58 -0500
Organization Self
Message-ID <56466B2E.1020900@verizon.net> (permalink)
References (4 earlier) <n22c4n$bjr$1@solani.org> <n22ekd$7og$1@dont-email.me> <n252vq$4jg$1@solani.org> <56462D90.2070503@verizon.net> <n25oil$b81$1@dont-email.me>

Show all headers | View raw


On 11/13/2015 05:37 PM, Stephen Sprunk wrote:
> On 13-Nov-15 12:36, James Kuyper wrote:
>> On 11/13/2015 11:26 AM, Philipp Klaus Krause wrote:
>>> On 12.11.2015 17:29, James Kuyper wrote:
>>>> On 11/12/2015 10:44 AM, Philipp Klaus Krause wrote:
>>>>> 1) AFAIK, Windows compilers tend to use a 16-bit wchar_t, and
>>>>> assume sequences of wchar_t to be UTF-16-encoded. Thus there
>>>>> are characters that don't fit into a wchar_t. How do these
>>>>> implementations get around the sandard requirement?
>>>>
>>>> I've no idea - possibly by not conforming to the requirements?
>>>
>>> So there are no standard-conforming C implementations targeting
>>> Windows?
>>
>> You might be right about that, for all I know - I know more about what
>> the standard requires for implementations of C, than I do about what
>> actual C implementations actually do; and I'm even less of an expert in
>> that regard for Windows platforms.
> 
> Simply put, Microsoft uses UTF-16 encoding for wchar_t; the Standard
> seems to indicate that isn't valid, for the same reason UTF-8 isn't.
> 
> UCS-2 _does_ seem valid; that obviously prevents use of any non-BMP
> characters, though, which is presumably why they switched to UTF-16.
...
>>> Microsoft documetnation, e.g.
>>> https://msdn.microsoft.com/de-de/library/yeby3zcb.aspx
>>> explicitly says that wchar_t uses UTF-8. But that means there are
>>> characters that do not
>>
>> It's been about 30 years since I studied German, and my German was
>> never good enough to read a document like this, anyway. Giving that
>> URL to translate.google.com produces a document in a language that
>> resembles English sufficiently well that I can get some idea of
>> what's going on.
> 
> Here's the actual English version:
> https://msdn.microsoft.com/en-us/library/yeby3zcb.aspx

It should have occurred to me that de-de was a language specification.

>> In order to enable this feature, it seems to be necessary to open the
>> file as follows:
>>
>> FILE * fp = fopen ("newfile.txt", "RT +, ccs = Encoding");
>>
>> According to the C standard,
>> ...
>> Note, in particular, the complete absence of any string that even
>> remotely resembles the mode string used in that example.
> 
> Yes, but Microsoft is infamous for standards non-compliance, so that
> shouldn't be much of a surprise.

This is not an example non-compliance. This is practically a textbook
example of a fully conforming extension to C. The behavior when passing
such a string to any implementation of fopen() is undefined, which means
that there's absolutely nothing that the implementation can do as a
result of such a call that would render it non-conforming.

>>> fit into a single wchar_t, which seems to violate the standard
>>> requirements.
>>
>> In particular, the following requirement does NOT apply when the
>> behavior of the program is undefined:
> 
> Isn't that backward?
> 
> If an implementation's wchar_t itself violates the Standard, then I'd
> think any use of that type invokes undefined behavior, though in this
> case, actual problems are unlikely until you use a non-BMP character.

I got the impression from the English translation of the German version
of that page, that wchar_t violates the standard's requirements only
when fopen() is called with a mode argument that renders the behavior
undefined. However, reading it in proper English, that impression
disappears - it appears to be UTF-16 at all times. It should be trivial
to put together a strictly conforming program that demonstrates the
non-conformance of that implementation.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-09 12:02 +0100
  Re: Is wchar_t really useful? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-11-09 03:24 -0800
    Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-10 18:33 -0600
      Re: Is wchar_t really useful? Ian Collins <ian-news@hotmail.com> - 2015-11-11 13:56 +1300
  Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-09 09:03 -0500
    Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-12 15:22 +0100
      Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-12 10:04 -0500
        Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-12 16:44 +0100
          Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-12 11:29 -0500
            Re: Is wchar_t really useful? supercat@casperkitty.com - 2015-11-12 09:14 -0800
              Re: Is wchar_t really useful? Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-14 11:50 -0800
                Re: Is wchar_t really useful? supercat@casperkitty.com - 2015-11-15 13:44 -0800
                Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-15 22:50 +0100
                Re: Is wchar_t really useful? supercat@casperkitty.com - 2015-11-15 14:46 -0800
                Re: Is wchar_t really useful? raltbos@xs4all.nl (Richard Bos) - 2015-11-17 22:34 +0000
                Re: Is wchar_t really useful? Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-16 07:25 -0800
            Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-13 17:26 +0100
              Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-13 13:36 -0500
                Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-13 16:37 -0600
                Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-13 17:58 -0500
              Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-13 16:01 -0600
                Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-13 23:36 +0100
    Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-12 15:28 +0100
      Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-12 10:26 -0500
    Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-12 14:27 -0600
  Re: Is wchar_t really useful? Lőrinczy Zsigmond <nospam@for.me> - 2015-11-13 05:02 +0100
    Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-13 11:52 +0100
      Re: Is wchar_t really useful? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-11-13 05:17 -0800
        Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-13 12:58 -0600
        Re: Is wchar_t really useful? supercat@casperkitty.com - 2015-11-13 11:14 -0800
    Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-13 12:45 -0600
  Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-13 18:24 +0100
    Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-13 13:55 -0500
      Re: Is wchar_t really useful? Philipp Klaus Krause <pkk@spth.de> - 2015-11-13 20:39 +0100
        Re: Is wchar_t really useful? James Kuyper <jameskuyper@verizon.net> - 2015-11-13 14:54 -0500
        Re: Is wchar_t really useful? Stephen Sprunk <stephen@sprunk.org> - 2015-11-13 17:04 -0600

csiph-web