[ Error ]
sample.yaml # 휴대폰 전화번호 mobileNo : 01023456754
❓❓❓❓❓
yaml파일에 위와 같이 mobileNo의 01023456754을 숫자로 저장한뒤
Java코드로 yaml을 내용을 가져와서 변수값을 확인해보면
139353580이라는 엉뚱한 숫자가 보이고
sample.yaml # 전화번호 mobileNo : 01023456789
❓❓❓❓❓
yaml파일에 위와 같이 mobileNo의 01023456789을 숫자로 저장한뒤
Java코드로 yaml을 내용을 가져와서 변수값을 확인해보면
01023456789이라는 값이 잘들어있는 알 수 없는 현상 발견
[ Solution ]
YAML에서는 숫자가 0으로 시작하면
기본적으로 8진수(Octal)로 해석할 수 있다
각 숫자가 8진수로 해석될 가능성
따라서 01023456754는
- 01023456754 → 0 맨앞에 있으므로 8진수로 오해할 수 있음
- 8진수는 0~7까지의 숫자만 허용합니다.
- 그러나 8과 9가 포함되지 않으면 정말로 8진수로 변환됨 → 엉뚱한 숫자로 보임( 139353580 )
0~-7범위의 숫자만 포함하고 있기때문에
YAML이 8진수로 해석하게 되고
8진수 01023456754 값을
10진수로 변환하면 139353580 가 되어 Java변수에 저장된다
sample.yaml # 휴대폰 전화번호 mobileNo : "01023456754"
따라서 나는 yaml의 전화번호를 숫자가 아닌
문자열로 저장 해서 Java에서 String으로 받는 방법으로 해결했고
❗❗❗❗❗
01023456754 와는 다르게
01023456789 라는 전화번호를 보면
8진수가 허용하는 0~7의 범위를 벗어난 8 또는 9가 포함되어있는데
- 8진수는 0~7까지의 숫자만 허용하고 8과 9는 유효하지 않은 값이므로
YAML이 자동으로 10진수로 인식하게 되어
Java변수에 담아 확인해보면 정상적으로 01023456789가 확인되는것이다
728x90
반응형
'Dev_Log' 카테고리의 다른 글
[CentOS] nohup java -jar sample.jar 실행시 자동종료될때 (1) | 2025.02.06 |
---|---|
[React] Module not found: Error: Can't resolve '@mui/icons-material/Menu' (0) | 2025.01.23 |
[React] react_dom__WEBPACK_IMPORTED_MODULE_1__.render is not a function (0) | 2025.01.22 |
[Docker] com.mysql.cj.jdbc.exceptions.CommunicationsException (1) | 2024.12.20 |
[VS Code] java.home설정하기 (0) | 2024.12.16 |