What encoding string UTF8 or WIN1251

Пример, как определить кодировку строки UTF8 или WIN1251?

with t as
(select 'Текст в кодировке UTF8' filename from dual union
select 'Текст в кодировке WIN1251' filename from dual union
select 'Text does not contain cyrilic charcters' filename from dual)
select filename,
case
    when not regexp_like(asciistr(convert(filename, 'cl8mswin1251')), '\FFFD') then
        case
            when regexp_like(convert(filename, 'cl8mswin1251', 'utf8'),'[а-яА-Я]') then 'UTF8'
            else 'WIN1251'
        end
        else 'WIN1251'
end ENCODE from t
order by 2;

FILENAME                                  ENCODE
----------------------------------------- -------
Текст РІ РєРѕРґРёСЂРѕРІРєРµ UTF8     UTF8   
Текст в кодировке WIN1251                 WIN1251
Text does not contain cyrilic charcters   WIN1251

Теперь дополним пример конвертацией текста UTF8 в WIN1251:

with t as
(select 'Текст в кодировке UTF8' filename from dual union
select 'Текст в кодировке WIN1251' from dual union
select 'Text does not contain cyrilic charcters' from dual)
select
encode,
case
    when ENCODE = 'WIN1251' then filename
    else convert(filename, 'cl8mswin1251', 'utf8')
end decode_filename
from(
select filename,
case
    when not regexp_like(asciistr(convert(filename, 'cl8mswin1251')), '\FFFD') then
        case
            when regexp_like(convert(filename, 'cl8mswin1251', 'utf8'),'[а-яА-Я]') then 'UTF8'
            else 'WIN1251'
        end
        else 'WIN1251'
end ENCODE from t)
order by 2;
                                      
ENCODE    DECODE_FILENAME
--------  -----------------------------------------
UTF8      Текст в кодировке UTF8
WIN1251   Текст в кодировке WIN1251
WIN1251   Text does not contain cyrilic charcters                                                      

 

 

Реклама

MS Lync 2013 кодировка в списке контактов

В клиенте MS Lync 2013 (локализованный) в списке Контакты имена групп на русском языке отображаются в неверной кодировке:
Lync2013

Имена групп подтягиваются из Active Directory (AD) по атрибуту DisplayName.

Определил, что проблема появляется после установки любого из этих апдейтов KB2881083, KB2889929, KB2899507 для клиента Lync 2013. Самое простое решение — их удалить, но к сожалению они исправляют много других багов и ошибок, что не позволило мне этого сделать.

Подобный вопрос поднимался тут https://social.technet.microsoft.com/Forums/forefront/ru-RU/fbc24e31-1da6-4ad8-a2e8-10d10dd99273/-lync-2013?forum=msoclientru, но решения (кроме удаления апдейтов) никакого не дали.

Нашел 3 способа решения данной проблемы:
1. Использовать английскую версию клиента Lync 2013.
2. Хранить пользовательские контакты не в UTC, а на самом Lync Server 2013.
3. Отказаться от кириллицы, используя только латинские символы.

В моем случае использовать английскую версию клиента Lync 2013 я не мог, т.к. MS Windows и Office на машинах пользователей локализованы (руссифицированы), и также не было возможности отказаться от кириллицы.
Поэтому лучшим решением для меня оказалось хранить пользовательские контакты на Lync Server 2013.

Для этого в Powershell Lync выполнил (подробно читать тут http://technet.microsoft.com/en-us/library/jj205224.aspx):

# Отключаем хранения контактов на Exchange, где Global - имя политика хранения контактов
Set-CsUserServicesPolicy -Identity "Global" -UcsAllowed $False
# Переносим все контакты на Lync Server, где lync.int - машина, на которой Lync Server
Get-CsUser -Filter {RegistrarPool -eq "lync.int"} | Invoke-CsUcsRollback -Confirm:$False