Четох много за Unicode, ASCII, кодови страници, цялата история, изобретяването на UTF-8, UTF-16 (UCS-2), UTF-32 (UCS-4) и кой ги използва и така нататък, но аз все още имам някои въпроси, на които трудно се опитах да намеря отговори, но не можах и се надявам да ми помогнете.
1 - Unicode е стандарт за кодиране на знаци и те определят кодова точка за всеки знак. Нещо като U+0000 (пример). Представете си, че имам файл, който има тези кодови точки ( ), в коя точка от приложението си ще го използвам?
Това може да е глупав въпрос, но наистина не знам в коя точка от приложението си ще го използвам. Създавам приложение, което може да чете файл, който има тези кодови точки, използвайки escape \u
и знам, че мога да го чета, да го декодирам, но сега следващият въпрос.
2 - В кой набор от знаци (кодова страница) трябва да го конвертирам? Видях някои C++ библиотеки, които използват името utf8_to_unicode
или utf8-to-utf16
и също само utf8_decode
, и това ме кара да се обърквам.
Не знам дали ще се появят отговори като този, но някои може да кажат: Трябва да го конвертирате в кодови страници, които ще използвате, но какво ще стане, ако моето приложение трябва да бъде интернационализирано?
3 - Чудех се, в C++, ако се опитам да покажа не-ASCII символи на терминала, получавам някои объркващи думи. Въпросът е: Какво прави символите, които трябва да се показват, са шрифтовете?
#include <iostream>
int main()
{
std::cout << "ö" << std::endl;
return 0;
}
Резултатът (Windows):
├Â
4 - В коя част от този процес влиза кодирането? Той кодира, взема кодовата точка и се опитва да намери думата, която е равна на шрифтовете?
5 = WebKit е машина за изобразяване на уеб страници в уеб браузъри, ако посочите набора от знаци като UTF-8, той работи добре с всички знаци, но ако посоча друг набор от знаци, няма, няма значение шрифтът което използвам, какво се случва?
<html>
<head>
<meta charset="iso-8859-1">
</head>
<body>
<p>ö</p>
</body>
</html>
Резултатът:
ö
Работи с помощта на:
<meta charset="utf-8">
6 – Представете си сега, че прочетох файла, кодирах го, имам всички кодови точки и трябва да запазя файла отново. Трябва ли да го запазя кодиран ( ) или трябва първо да декодирам, за да го трансформирам отново в знаци и след това да запазя?
7 - Защо думата "unicode" е малко претоварена и понякога се разбира като utf-16? (източник)
Това е всичко за сега. Благодаря предварително.