commitizen / commitizen/cz-cli

fix: UnicodeDecodeError when running 'cz init' on Windows with non-English locale

Abierto
#1,003 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
JavaScript
Estrellas
17.5k
Forks
566
Merge medio
8 h 16 min
PR fusionados (30 d)
1

Descripción

## Description
When running `cz init` on Windows, the command fails with a UnicodeDecodeError due to the default file encoding being 'gbk' instead of 'utf-8'.

### Steps to Reproduce
1. Create a new Python project on Windows with Chinese system locale
2. Install commitizen
3. Run `cz init`
4. Select `pyproject.toml` as config file
5. Select commit rule

### Error Message
```
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 52: illegal multibyte sequence
```

### Technical Details
The error occurs in `commitizen/commands/init.py` when checking for poetry configuration:
```python
@property
def is_python_poetry(self) -> bool:
if not self.has_pyproject:
return False
with open("pyproject.toml") as f:
return "[tool.poetry]" in f.read()) # Here the file is opened without specifying encoding
```

### Expected Behavior
The file should be opened with UTF-8 encoding explicitly to ensure consistent behavior across different system locales.

### Suggested Fix
```python
# In commitizen/commands/init.py
@property
def is_python_poetry(self) -> bool:
if not self.has_pyproject:
return False
with open("pyproject.toml", encoding=self.settings["encoding"]) as f: # self.settings["encoding"] default is utf-8
return "[tool.poetry]" in f.read())
```

### Environment
- OS: Windows
- Python Version: 3.12
- Commitizen Version: latest
- System Locale: Chinese (Simplified)

### ScreenShot
![Image](https://github.com/user-attachments/assets/993cb587-d7ae-4159-a605-3c96a28f7fe8)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.