2016-10-20 29 views
9

Czy możliwe jest wykorzystanie pełnego zakresu (powiedzmy) języka chińskiego w nazwach plików aktywów (obrazów) w systemie iOS? Jeśli nie, jakie części dużych języków są obsługiwane w nazwach plików, wyszukiwaniach ciągów i innych czynnościach związanych z obsługą plików?Nazwy plików w Unicode w iOS

+3

Czy próbowałeś? Zadziałało? – rmaddy

+0

Teoretycznie, cały chiński "alfabet" powinien zadziałać ... ale jest to gigantyczne zadanie sprawdzenia, jako osoba nie mówiąca/pisząca/czytająca, osoba nie chińska. A potem są problemy z innymi językami ... których też nie znam. Więc nie, nie próbowałem tego. I nie jestem w stanie przeprowadzić wyczerpującego (lub dokładnego) testu. Mam nadzieję na autorytatywne odniesienie lub odpowiedź od kogoś, kto by wiedział. – Confused

+0

Zakładam, być może niesłusznie, że ciągła rozmowa Apple o wspieraniu unicode i lokalizacji, którą ich system plików jest w pełni zdolny, oznacza, że ​​obsługuje wszystkie języki i wszystkie zestawy znaków.Ale nie chcę polegać na tym założeniu bez jakiejś pewności ze źródła, które jest o wiele bardziej kompetentne w tych sprawach. Który jest prawie kimś innym niż ja. – Confused

Odpowiedz

1

System plików iOS wykorzystuje wielkość liter HFSX, która jest odmianą HFS Plus i używa tych samych reguł dla nazw plików i kodowań znaków.

Zasady te są określone w kilku sekcjach Apple Technote 1150.

Istotne rozważania są:

  • Możesz użyć do 255 16-bitowych znaków Unicode na nazwę pliku lub folderu, jak to opisano w sekcji HFS Plus Names z techniczną firmy 1150.
  • System plików na swoim poziomie podstawowym używa Unicode v2.0 (jest to poprawione) i ciągi muszą być przechowywane w całkowicie rozłożonej kolejności kanonicznej. Wyklucza to użycie niektórych "form równoważnych" - to znaczy, że muszą zostać przekształcone do postaci rozłożonej. Zostało to szczegółowo opisane w sekcji Technote 1150. W tej sekcji opisano inne problemy i należy je uważnie przeczytać.
  • Lista niedozwolonych znaków znajduje się w tym Decomposition Table.
  • Znak dwukropka ":" jest używany jako separator katalogu i jest niepoprawny w nazwach plików i folderów.
4

Systemy iOS i Mac OS korzystają obecnie z HFS+ filesystem, który obsługuje pełny kod Unicode w nazwach plików. Oznacza to zasadniczo dowolną postać, w tym język chiński i inne języki ludzkie. System plików pozwala na maksymalnie 255 znaków, co dla większości języków wynosi około 255 punktów kodowych. (Widzę notatkę, że długość jest oparta na znakach zakodowanych w UTF16. Istnieją znaki, które wymagają więcej niż 16 bitów do kodowania, takie jak emoji, z których możesz również korzystać, ale będziesz mieć mniej dozwolonych znaków.)

Interfejsy API plików w systemie iOS (NSFileManager itp.) Powinny uwzględniać ciągi znaków Unicode bez żadnych dodatkowych czynności. Zauważ, że sekwencje Unicode są kanonizowane w określony sposób: np. znak é może być reprezentowany na wiele różnych sposobów w Unicode, ale zostanie rozłożony w znormalizowany sposób jako nazwa pliku.

Najważniejsze jest to, że możesz używać ciągów Unicode jako nazw plików, o ile mają one rozsądną długość. Ponieważ superlongowe nazwy Unicode zaczną borykać się z problemami związanymi z długością w nieco nieprzewidywalny sposób (naprawdę tylko skomplikowane i niepotrzebne do obliczenia), prawdopodobnie powinieneś ustawić pewne rozsądne nałożone limity długości.

APFS to system plików następnej generacji opracowany przez firmę Apple, który wkrótce pojawi się w systemie iOS. Nie mogę znaleźć informacji na temat kodowania nazw plików, ale jest to uczciwe założenie, że będzie obsługiwać wszystko, co obsługuje HFS +, jeśli nie więcej.