i18n-safe - смутное понятие. Как правило, он относится к коду, который будет работать в международных средах - с разными языковыми стандартами, клавиатурой, наборами символов и т. Д. Правильно писать код, безопасный для i18n, сложно.
Это означает, что на код нельзя положиться:
sizeof (char) == 1
потому что этот символ может быть 4-байтовым символом UTF-32 или 2-байтовым символом UTF-16 и занимать несколько байтов.
Это означает, что код не может полагаться на длину строки, равную количеству байтов в строке. Это означает, что код не может полагаться на нулевые байты в строке, указывающей нулевой терминатор. Это означает, что код не может просто предполагать кодировку ASCII текстовых файлов, строк и входных данных.