News for hackers. Stuff that matters.
Re:Rapidstring: Maybe the fastest string library ever by dwheeler on Wednesday August 01, 2018 @12:34AM (#17659709)
It appears to support Unicode just fine, you just have to use UTF-8. I find that in most cases you should only use UTF-8 anyway, so in most cases that is not a problem.
Re:Rapidstring: Maybe the fastest string library ever by rurban on Wednesday August 01, 2018 @04:51AM (#17660690)
Nope, big mistake. You cannot just search for "Café" in "Café", as there are multiple representations for the same character. Think of Cyrillic vs Greek, Han vs Hangul. The popular garbage-in, garbage-out doesn't apply to unicode identifiers. That's why the Mac filesystem normalization was correct, and the unix filesystems are all broken. If it's not identifiable it's no identifier. That's why java and cperl are the only languages with proper and safe unicode support. Python 3 is a bit better than Python 2, Perl6 better than Perl5 and the rest, but still don't apply unicode security guidelines for identifiers. It's much better for browsers and email clients.

And with case-insensitivity it gets worse, as there are some locale dependent additional rules, for Turkish and Lithuania. And this depends on "some" global settings.

http://perl11.org/blog/foldcase.html

Re:Rapidstring: Maybe the fastest string library ever by iforgotpassword on Wednesday August 01, 2018 @06:28AM (#17661215)
Japanese is also great. While there are general rules when you use hiragana vs. katakana, sometimes for stylistic reasons the "wrong" one is used, or some kanji is "spelled out" as hiragana, and depending on context, you might or might not want to include these in your search results.

Tbh I just stopped caring and now happily live in my little world where utf8 is the solution to everything, doesn't yield any problems ever, and anyone telling me differently gets completely ignored.

Re:Rapidstring: Maybe the fastest string library ever by vbezhenar on Wednesday August 01, 2018 @01:34AM (#17659952)
If you're using WinAPI, you have to use UCS-16. Converting strings for every call would be abysmal to performance.
Re:Rapidstring: Maybe the fastest string library ever by hrydgard on Wednesday August 01, 2018 @02:02AM (#17660066)
For most software it's perfectly fine to convert. What Windows API call that takes string input do you call so often that it would be an issue?
Re:Rapidstring: Maybe the fastest string library ever by flohofwoe on Wednesday August 01, 2018 @03:44AM (#17660386)
There are only very few WinAPI functions which use UCS-2 vs ASCII, and none of them are performance-critical. It's totally fine to convert from/to UTF-8 on the fly, especially since the conversion is extremely cheap (and the rest of the world has moved on to UTF-8 anyway).
Re:Rapidstring: Maybe the fastest string library ever by iforgotpassword on Wednesday August 01, 2018 @06:23AM (#17661203)
All winapi functions use UCS2. The "ASCII" versions are just wrappers that implicitly convert from the current locale (latin1, ShiftJIS, BIG5, ...) to UCS2. Try passing some Japanese text to the ASCII version of a function on a system that's set to eg. German and see what happens...
Re:Rapidstring: Maybe the fastest string library ever by flohofwoe on Wednesday August 01, 2018 @06:45AM (#17661304)
Most Win32 API functions don't even take string parameters, so there's no separate ASCII or UCS-2 version of those.

Of the functions that take strings, the old ...A() versions should never be called anyway since they depend on the obsolete concept of code pages. The proper way to work with strings on Windows (IMHO) is to encode all string data to UTF-8, only encode/decode from/to UCS-2 when needed, and call the ...W() functions explicitely (don't use the global UNICODE define).

Also see: http://utf8everywhere.org/