/ / Ruby dobre pracuje so znakom Unicode v názvoch súborov v systémoch Mac OS X a Linux, ale prečo to urobiť v systéme Windows, trvalo to najmenej 2 roky? - ruby, unicode, utf-8, internacionalizácia, utf-16

Ruby funguje dobre s znakom Unicode v názvoch súborov na systémoch Mac OS X a Linux, ale prečo to funguje na Windows, trvalo to minimálne 2 roky? - rubín, unicode, utf-8, internacionalizácia, utf-16

Ruby dobre pracuje so znakom Unicode v súborových cestách a názvoch súborov v systémoch Mac OS X a Linux, ale prečo fungovať v systéme Windows, trvalo viac ako 2 roky?

Práve som sa pozeral na kód Google Jam. Ľudia riešia netriviálne problémy do niekoľkých hodín. V práci si dokážem predstaviť riešenie problému s názvom súboru alebo cesty, ktorý má znaky unicode, aj keď ho potrebujeme napísať do štandardnej knižnice, aby bolo možné vyriešiť ho za deň alebo dva, pár dní alebo 1 alebo 2 týždne? Ale 2 roky?

Čo by mohlo byť dôvodom? Myslím, že Mac OS X a Linux môžu fungovať tak, ako to bolo, pretože používali utf-8 a veľa programových kódov ASCII môže dobre fungovať s utf-8 bez akýchkoľvek úprav.

Systém Windows možno vracia názvy súborov alebo cestu v UTF-16, takže je to komplikovanejšie, ale existujú funkcie na prevod UTF-16 na utf-8 a naopak, takže nejde o celkom riešiteľný problém?

odpovede:

2 pre odpoveď č. 1

Je to určite riešiteľný problém, ale myslím si, že niktov jadre tímu používa Windows na vývoj. Pre takéto témy je riešenie OSX / Linux / BSD / ... dostupné rýchlo, pretože vo väčšine prípadov je to len jedno riešenie pre všetky tieto platformy a práve tie platformy používajú hlavne vývojári jadra a ľudia jadro uzatvárajú (tj. ochotný prísť s opravou a ponúknuť podporu). Majte tiež na pamäti, že hlavným prípadom použitia Ruby je pre webové aplikácie, a prinajmenšom v krajine Ruby je nasadenie systému Windows neobvyklé.

Na pomoc desktopovým / konzolovým aplikáciám je Rubypopulárne iba na OSX, ako to vidím ja. Na Linuxe je v tejto oblasti pomerne dominantný Python a na Windows nič také neexistuje (možno aj VBScript), pretože často nemáte malé aplikácie, ktoré by navzájom interagovali (konzolové programy, rúry, princíp KISS, princíp UNIX, všetko nie veľmi časté v systéme Windows, musíte napísať službu pre čokoľvek atď.). Ale to nemôžem naozaj posúdiť, pretože som Windows roky nepoužíval. Preto máte len zopár ľudí, ktorí majú skutočne tento problém. A ak nikto z týchto ľudí nie je ochotný problém vyriešiť, trvá to dva roky.


2 pre odpoveď č. 2

Pretože na vykonanie každej triviálnej operácie musíte mať medzi OS a vašim programom obrovskú vrstvu.

i fopen() nefunguje s utf-8 v systéme Windows. Inými slovami, dôvod je ten, že Windows Unicode API je ... svinstvo (prepáčte všetkým vývojárom Windows)

Takže podpora Unicode v systéme Windows je veľmi ťažká, zatiaľ čo všetky ostatné operačné systémy žijú šťastne s utf-8.