Символьное пространство нулевой ширины добавление забавных символов в поле Power BI

#powerbi #powerquery

Вопрос:

Пример кода 1

 Table.AddColumn(
    ToList, 
    "AddInvisibleChars", 
    each 
    List.Transform(
        [Chars], 
        each 
        if 
        List.Contains(LowerCaseChars, _) 
        then 
        _ amp; Character.FromNumber(8023) 
        else _
        )
        ),
 

Я использую это, чтобы обмануть Power BI с учетом регистра. Когда я заглядываю под капот, он добавляет эти специальные символы в поле. Я экспортирую таблицу с помощью Dax studio в файл csv, чтобы просмотреть их .

 Po Number - Cr​e​d​i​t​ Ca​r​d​

"Zero Width Space in UTF CODES
UTF-8 (hex)
0xE2 0x80 0x8B (e2808b)"

​  - These are the extra hidden characters added in this Power BI field under the covers .

€
20AC
0128 

â
00E2
0226

‹
2039
0139"
 

Что происходит и как это остановить, не отключая исправление чувствительности к регистру для интерфейса Power Bi?

Характер.От номера(8023)

Характер.Функция fromNumber является эквивалентом функции Chr в VBA или ‘String’.charCodeAt() для Javascript. Он возвращает символ Ascii-кода из числа. В примере, показанном выше, будут возвращены не буквенно-цифровые символы. Таким образом, используя это, вы можете заменить все не буквенно-цифровые символы из текстовой строки.

Попытка кодирования UTF 8 в этом поле в конце приводит к тому, что забавные символы меняются на ?.

 Table.TransformColumns(
    #"Replaced Value1",
    {
     "number" ,
     each if (_ = null or _ = "") then null
          else Text.FromBinary(Text.ToBinary(_,1251), TextEncoding.UTF8)
    }
  )
 

https://www.fileformat.info/info/unicode/char/200b/index.htm

Комментарии:

1. Вы пытаетесь преобразовать строчные буквы в____?

2. Добавьте пробел с нулевой шириной к каждой строчной букве в соответствии с решением Криса Уэбба по проблеме чувствительности к регистру в Power BI community.powerbi.com/t5/Desktop/…

3. Эти «дополнительные» символы на самом деле являются символом ZWS. Представление ZWS, шестнадцатеричное, закодированное для UTF8, таково E2 80 8B . Однако программа, которую вы используете для проверки CSV, по-видимому, возвращает их в виде отдельных символов. Если я открою файл в Notepad , он будет выглядеть нормально. Я полагаю, вы могли бы избавиться от них в файле CSV с помощью соответствующего редактора.

4. Интересный. Они нужны интерфейсу Power BI, но затем поле данных переходит в приложение Power и попадает в список SharePoint . Если бы был способ удалить эти символы, которые не видны невооруженным глазом . Это происходит только тогда, когда вы экспортируете в csv, вы видите их или когда вы импортируете их куда-то, где длина символов в поле видна как 3 дополнительных символа. Поэтому , если вы посмотрите на список SharePoint, вы не сможете их увидеть, только когда вы экспортируете его в csv.

5. Если я экспортирую данные из Power BI непосредственно в CSV, а затем открываю CSV в notepad или блокноте, они не отображаются.