2014-12-22 13 views
0

меня написать код вроде как следующий,журналы NXLOG в Юникода charecters

<Extension charconv> 
    Module xm_charconv 
    AutodetectCharsets utf-8, euc-jp, utf-16, utf-32, iso8859-2 
</Extension> 

И

<Input sql-ERlogs> 
    Module  im_file 
    File 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL\MSSQL\Log\ER*' 
    ReadFromLast TRUE 
    Exec  convert_fields("AUTO", "utf-8"); if $raw_event == '' drop(); 
</Input> 

Я получил выход, как следующее изображение

enter image description here

Если я разберу один из журналов, я получил оригинальный журнал, подобный этому,

enter image description here

Я не знаю, почему в символах Unicode, прежде чем расширяться, Любая помощь будет весьма заметным. Благодарю.

+0

Похоже, UTF-16LE был передан в JSON кодировщика ожидающей широкие символы или UTF-8. NUL-байты кодированного текста были закодированы как '\ u0000', потому что NUL не могут быть отображены и в противном случае« опасны ». – ikegami

+0

Также я попытался с 'convert_fields (« AUTO »,« utf-16 »)'. Затем сообщение типа ': message =>" Получено событие, которое имеет различную кодировку символов, чем вы настроили. "@ikegami – Gunaseelan

ответ

0

У меня был такой же выпуск. Оказывается, «АВТО» не работает надежно. Руководство NXLOG по MS SQLSRV намекает на то, что ответ; вы должны указать тип, например UTF-16LE.

Проверьте содержимое файла с шестнадцатеричным редактором и сравнить диаграммы МС https://msdn.microsoft.com/en-us/library/windows/desktop/dd374101%28v=vs.85%29.aspx

Exec $Event = convert($raw_event,"UTF-16LE","UTF-8"); to_json(); 

 Смежные вопросы

  • Нет связанных вопросов^_^