인코딩과 관련된 Azure CLI 나머지 문제 (독일어 Umlauts)

마틴 브랜들

az rest명령을 사용하여 Azure API Management 내에서 사용자를 만들고 독일어 움라우트 (예 : ä, ö, ü) 가 포함 된 사용자 이름에 문제가 있습니다 . 스크립트는 사용자를 생성하지만 이름에 잘못된 문자가 포함되어 있습니다. 다음은 예입니다.

여기에 이미지 설명 입력

이것이 내가 사용자를 만드는 방법입니다. 큰 따옴표가있는 일부 PowerShell / AZ 문제로 인해 파일에 사용자를 작성하고 az cli에 전달합니다 .

@{
    properties = @{
      confirmation = "invite"
      firstName    = "Max"
      lastName     = "Müstermann"
      email        = "[email protected]"
      appType      = "developerPortal"
    }
  } | ConvertTo-Json -Compress | Out-File $tmpFile -Encoding UTF8

이것은 파일을 cli에 전달하는 방법입니다.

az rest --method put --uri $uri --body @$tmpFile

파일 자체는 괜찮아 보입니다. 여기에 이미지 설명 입력

이미 헤더를 추가하려고했지만 charset=utf-8문제가 해결되지 않았습니다. 어떤 아이디어?

Mclayton

끔찍한 해결 방법

여기에서 문제를 재현했으며 지금까지 작동하는 유일한 방법 ü은를 json 유니 코드 이스케이프 시퀀스 로 바꾸는 것 입니다.

$data = @{
    properties = @{
      confirmation = "invite"
      firstName    = "Max"
      lastName     = "Müstermann"
      email        = "[email protected]"
      appType      = "developerPortal"
    }
}
$json = $data | ConvertTo-Json -Compress;
#             vvvvvvvvvvvvvvvvvvvvvv
$json = $json.Replace("ü", "\u00FC"); # <----- replace ü with escape sequence
#             ^^^^^^^^^^^^^^^^^^^^^^
Set-Content -Path $tmpfile -Value $json;

$requestUri = "https://management.azure.com/" +
                  "subscriptions/$subscriptionId/" +
                  "resourceGroups/$resourceGroupName/" +
                  "providers/Microsoft.ApiManagement/" +
                  "service/$serviceName/" +
                  "users/$username" +
                  "?api-version=2019-12-01";

az rest --method put --uri $requestUri --body @$tmpFile

다음을 제공합니다.

여기에 이미지 설명 입력

모든 비 ASCII 문자의 일반적인 경우를 해결하지 못하기 때문에 그다지 만족스럽지 않은 솔루션이 아니라는 것을 알고 있습니다. 변환 된 json을 사용하여 이상한 경우에 문제를 일으킬 수 있습니다.

한 가지 극단적 인 옵션은 적절한 문자를 이스케이프하는 자체 json 직렬 변환기를 작성하는 것입니다. 좋은 생각은 아니지만 잠재적으로 작동 할 것입니다. 이 경로를 따라가는 것에 대해 생각한다면 여기에 아주 틈새 유스 케이스를 위해 얼마 전에 작성한 원시 PowerShell 직렬 변환기가 있습니다. 이는 시작점으로 사용할 수 있고 문자열 직렬화 코드를 조정하여 적절한 문자를 이스케이프합니다 -ConvertTo-OctopusJson.ps1

차단을 해제하거나 최소한 생각할 수있는 옵션을 제공하기에 충분할 수 있습니다.

더 많은 정보

이 문제를 조사하는 다른 사람을위한 몇 가지 지침은 다음과 같습니다.

  • az다음 환경 변수를 설정하면 Fiddler를 통해 요청을 보낼 수 있습니다 .
:: https://stackoverflow.com/questions/20500613/how-to-set-a-proxy-for-the-azure-cli-command-line-tool
set HTTPS_PROXY=https://127.0.0.1:8888

:: https://stackoverflow.com/questions/55463706/ssl-handshake-error-with-some-azure-cli-commands
set ADAL_PYTHON_SSL_NO_VERIFY=1
set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
  • --body @$tmpfile매개 변수 파일을 이진 blob으로 보내지 않는 것 같습니다 . 대신 파일을 텍스트로 읽고 ISO-8859-1 (HTTP의 기본 인코딩)로 다시 인코딩합니다. 파일은 예를 들어 함께 인코딩 UTF8 ü로 표현 C3 BC:

여기에 이미지 설명 입력

파일 내용 은 HTTP 요청을 보낼 와 같이 ü표현 된 ISO-8859-1 인코딩으로 계속 변환됩니다 .FCaz

여기에 이미지 설명 입력

  • 응답은 다음과 같이 돌아옵니다.

여기에 이미지 설명 입력

여기서 �( EF BF BD)는 유니 코드 " REPLACEMENT CHARACTER " 의 UTF8 표현입니다 .

여기에 이미지 설명 입력

  • 내 생각 엔 클라이언트 측은 본문을 ISO-8859-1로 보내고 있지만 서버 측은 UTF8로 취급하고 있습니다. 서버는 ISO-8859-1 바이트를 FC디코딩하는 데 실패 ü하고 대신 "REPLACEMENT CHARACTER"로 대체하고 마지막으로 응답을 UTF8로 인코딩합니다.

다음과 같이 시뮬레이션 할 수 있습니다.

# client sends request encoded with iso-8859-1
$requestText = "Müstermann";
$iso88591 = [System.Text.Encoding]::GetEncoding("iso-8859-1");
$requestBytes = $iso88591.GetBytes($requestText);
write-host "iso-8859-1 bytes = '$($requestBytes | % { $_.ToString("X2") })'";
# iso-8859-1 bytes = '4D FC 73 74 65 72 6D 61 6E 6E'

# server decodes request with utf8 instead
$utf8 = [System.Text.Encoding]::UTF8;
$mangledText = $utf8.GetString($requestBytes);
write-host "mangled text = '$mangledText'";
# mangled text = 'M�stermann'

# server encodes the response as utf8
$responseBytes = $utf8.GetBytes($mangledText);
write-host "response bytes = '$($responseBytes | % { $_.ToString("X2") })'";
# response bytes = '4D EF BF BD 73 74 65 72 6D 61 6E 6E'

스크린 샷의 바이트와 일치하는 것 같으므로 Azure API Management API의 버그 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 및 외국어와 관련된 인코딩 문제

분류에서Dev

iOS 8.1에서는 코어 데이터 바인딩과 관련된 자동 레이아웃 문제이지만 iOS 7에서는 그렇지 않음

분류에서Dev

레일과 관련된 경로 문제

분류에서Dev

WSo2 Identity 서버 나머지 호출과 관련된 도메인 간 문제

분류에서Dev

URL 연결과 관련된 URL 인코딩 문제

분류에서Dev

분음 부호 인코딩과 관련된 이상한 문제

분류에서Dev

분음 부호 인코딩과 관련된 이상한 문제

분류에서Dev

Github에서 마크 다운 파일 읽기와 관련된 인코딩 문제

분류에서Dev

파일 다운로드와 관련된 Azure Blob Storage 문제

분류에서Dev

일반 / 상속과 관련된 디자인 문제

분류에서Dev

Express Middleware의 제어 흐름과 관련된 SendFile 문제

분류에서Dev

어패류 자동 완성과 관련된 몇 가지 질문

분류에서Dev

무작위 자동 생성과 관련된 C # 코딩 문제

분류에서Dev

파일 열기 및 파일 출력과 관련된 C ++ 문제

분류에서Dev

문자 인코딩은 글꼴과 어떤 관련이 있습니까?

분류에서Dev

결과 이미지의 방향과 관련된 AVFoundation CaptureStillImage 문제

분류에서Dev

Aurelia : 사용자 지정 특성의 기본 속성과 관련된 데이터 바인딩 문제

분류에서Dev

버튼 생성 및 이벤트 핸들러 바인딩과 관련된 몇 가지 문제

분류에서Dev

downlevelIteration과 관련된 Mocha typescript 컴파일 문제

분류에서Dev

여러 줄 바꿈과 관련된 Python 파일 readline 문제

분류에서Dev

출력 파일 이름과 관련된 AVConv 루프 문제

분류에서Dev

PHP에서 계산과 관련된 일부 초보자 문제

분류에서Dev

일광 절약 시간과 관련된 exiftool 및 geosync 문제

분류에서Dev

엔드 라인 문자와 관련된 일관되지 않은 쉘 동작

분류에서Dev

조인과 관련된 SQL 문제

분류에서Dev

집중 게임 구축과 관련된 몇 가지 문제

분류에서Dev

이미지 업로드 생성과 관련된 Android 문제

분류에서Dev

Internet Explorer의 위치 지정과 관련된 Unslider 문제

분류에서Dev

사용자 지정 입력과 관련된 PrestaShop Blocklayered 문제

Related 관련 기사

  1. 1

    Python 및 외국어와 관련된 인코딩 문제

  2. 2

    iOS 8.1에서는 코어 데이터 바인딩과 관련된 자동 레이아웃 문제이지만 iOS 7에서는 그렇지 않음

  3. 3

    레일과 관련된 경로 문제

  4. 4

    WSo2 Identity 서버 나머지 호출과 관련된 도메인 간 문제

  5. 5

    URL 연결과 관련된 URL 인코딩 문제

  6. 6

    분음 부호 인코딩과 관련된 이상한 문제

  7. 7

    분음 부호 인코딩과 관련된 이상한 문제

  8. 8

    Github에서 마크 다운 파일 읽기와 관련된 인코딩 문제

  9. 9

    파일 다운로드와 관련된 Azure Blob Storage 문제

  10. 10

    일반 / 상속과 관련된 디자인 문제

  11. 11

    Express Middleware의 제어 흐름과 관련된 SendFile 문제

  12. 12

    어패류 자동 완성과 관련된 몇 가지 질문

  13. 13

    무작위 자동 생성과 관련된 C # 코딩 문제

  14. 14

    파일 열기 및 파일 출력과 관련된 C ++ 문제

  15. 15

    문자 인코딩은 글꼴과 어떤 관련이 있습니까?

  16. 16

    결과 이미지의 방향과 관련된 AVFoundation CaptureStillImage 문제

  17. 17

    Aurelia : 사용자 지정 특성의 기본 속성과 관련된 데이터 바인딩 문제

  18. 18

    버튼 생성 및 이벤트 핸들러 바인딩과 관련된 몇 가지 문제

  19. 19

    downlevelIteration과 관련된 Mocha typescript 컴파일 문제

  20. 20

    여러 줄 바꿈과 관련된 Python 파일 readline 문제

  21. 21

    출력 파일 이름과 관련된 AVConv 루프 문제

  22. 22

    PHP에서 계산과 관련된 일부 초보자 문제

  23. 23

    일광 절약 시간과 관련된 exiftool 및 geosync 문제

  24. 24

    엔드 라인 문자와 관련된 일관되지 않은 쉘 동작

  25. 25

    조인과 관련된 SQL 문제

  26. 26

    집중 게임 구축과 관련된 몇 가지 문제

  27. 27

    이미지 업로드 생성과 관련된 Android 문제

  28. 28

    Internet Explorer의 위치 지정과 관련된 Unslider 문제

  29. 29

    사용자 지정 입력과 관련된 PrestaShop Blocklayered 문제

뜨겁다태그

보관