У нас есть японский клиент с исходным кодом на COBOL на мэйнфрейме. Он утверждает, что код мэйнфрейма представлен в Shift-JIS2 (и мы думаем, что хорошо это понимаем). Когда этот код передается на ПК, какая кодировка используется чаще всего? Мы отправили ему программу для обработки этого кода COBOL, и, похоже, она задыхается. Заказчик не дает нам код напрямую, поэтому экспериментировать сложно. Его эксперименты, кажется, указывают на UTF-8; Я предполагаю, что японские символы, кодируемые в Shift-JIS2, соответственно конвертируются в эквиваленты Unicode. У кого-нибудь есть здесь опыт?
РЕДАКТИРОВАТЬ: Я думаю, мы раскрыли нашу тайну. Клиент (да!) Использует CP-932 («ShiftJIS») на ПК, но его программа на COBOL имеет японские символы в идентификаторах, и поэтому наш инструмент задыхается.
РЕДАКТИРОВАТЬ: Продолжение: немного больше сюрприза. SHIFT-JIS часто кодирует то, что мы думаем как текст ASCII, как так называемые символы «ПОЛНОЙ ШИРИНЫ», которые занимают то же экранное пространство, что и восточноазиатский иероглиф; обычные символы ASCII действуют как полуширины. Итак, есть ПОЛНАЯ ШИРИНА «A», «B», ... «Z», а также ПОЛНАЯ ШИРИНА «-». Очевидно, чтобы обрабатывать японский COBOL, наш синтаксический анализатор COBOL должен принимать не только западный код ASCII, но и его эквиваленты FULLWIDTH, особенно. буквы ПОЛНОЙ ШИРИНЫ и, что удивительно, ДЕФИС ПОЛНОЙ ШИРИНЫ, используемые для разделения «букв» в идентификаторе COBOL.
РЕДАКТИРОВАТЬ: IBM Enterprise COBOL позволяет использовать символы DBCS в идентификаторах. Ой!