mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-20 00:17:44 +00:00
fix(firebird): add configurable connection charset
This commit is contained in:
@@ -3937,6 +3937,20 @@ const postgresClientKeyPath = computed({
|
||||
form.value.url_params = setUrlParam(form.value.url_params, "sslkey", value);
|
||||
},
|
||||
});
|
||||
// Firebird 的 Java 驱动(Jaybird)默认按 JVM 编码(UTF-8)解码 CHARACTER SET NONE
|
||||
// 字段,历史数据若以 GBK 等编码存放就会显示为乱码。这里把连接字符集映射到 JDBC URL 的
|
||||
// charSet 参数(复用通用 URL 参数通道),交给用户按数据实际编码选择。
|
||||
const FIREBIRD_CHARSET_OPTIONS = ["UTF8", "GBK", "GB18030", "BIG5", "ISO8859_1", "Cp1252"];
|
||||
const firebirdCharsetItems = computed(() => {
|
||||
const current = getUrlParam(form.value.url_params, "charSet");
|
||||
return current && !FIREBIRD_CHARSET_OPTIONS.includes(current) ? [current, ...FIREBIRD_CHARSET_OPTIONS] : FIREBIRD_CHARSET_OPTIONS;
|
||||
});
|
||||
const firebirdCharset = computed({
|
||||
get: () => getUrlParam(form.value.url_params, "charSet") || "default",
|
||||
set: (value: string) => {
|
||||
form.value.url_params = setUrlParam(form.value.url_params, "charSet", value === "default" ? "" : value);
|
||||
},
|
||||
});
|
||||
const redisTlsInsecure = computed({
|
||||
get: () => getUrlParam(form.value.url_params, "insecure").toLowerCase() === "true",
|
||||
set: (value: boolean) => {
|
||||
@@ -9349,6 +9363,24 @@ function openExternalUrl(url: string) {
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div v-if="form.db_type === 'firebird'" class="grid grid-cols-4 items-start gap-4">
|
||||
<Label :class="connectionLabelTopClass">{{ t("connection.firebirdCharset") }}</Label>
|
||||
<div class="col-span-3 space-y-1.5">
|
||||
<Select v-model="firebirdCharset">
|
||||
<SelectTrigger class="h-9">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="default">{{ t("common.default") }}</SelectItem>
|
||||
<SelectItem v-for="charset in firebirdCharsetItems" :key="charset" :value="charset">{{ charset }}</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p class="text-xs leading-5 text-muted-foreground">
|
||||
{{ t("connection.firebirdCharsetHint") }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="supportsGenericUrlParams" class="connection-url-params-row grid grid-cols-4 items-start gap-4" :class="{ 'connection-url-params-row--compact': !showGenericUrlParamsHint, 'connection-url-params-row--with-hint': showGenericUrlParamsHint }">
|
||||
<Label :class="[connectionLabelClass, 'connection-url-params-label']">{{ t("connection.urlParams") }}</Label>
|
||||
<div class="col-span-3 space-y-1.5">
|
||||
@@ -9375,7 +9407,9 @@ function openExternalUrl(url: string) {
|
||||
? 'localdatacenter=dc1'
|
||||
: form.db_type === 'transwarp'
|
||||
? 'fetchSize=500;auth=noSasl'
|
||||
: 'sslmode=prefer'
|
||||
: form.db_type === 'firebird'
|
||||
? 'charSet=GBK'
|
||||
: 'sslmode=prefer'
|
||||
"
|
||||
/>
|
||||
<p v-if="showGenericUrlParamsHint" class="text-xs leading-5 text-muted-foreground">
|
||||
|
||||
@@ -733,6 +733,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Sertifikat yoxlamasını ötür",
|
||||
redisTlsInsecureHint: "Öz imzalı sertifikatlar və ya özəl CA-lar üçün redis-cli --tls --insecure əmrinə bərabərdir.",
|
||||
mysqlTlsMode: "TLS rejimi",
|
||||
firebirdCharset: "Simvol dəsti",
|
||||
firebirdCharsetHint: "CHARACTER SET NONE sütunlarında saxlanan mətni (məsələn, GBK ilə saxlanmış köhnə Çin məlumatları) deşifrə edir. Mətn pozulmuş görünürsə, məlumatın faktiki kodlaşdırmasını seçin.",
|
||||
mysqlTlsModePreferred: "Üstün tutulan",
|
||||
mysqlTlsModeDisabled: "Deaktiv",
|
||||
mysqlTlsModeRequired: "Tələb olunur",
|
||||
|
||||
@@ -1020,6 +1020,8 @@ export default {
|
||||
redisTlsInsecure: "Skip certificate verification",
|
||||
redisTlsInsecureHint: "Equivalent to redis-cli --tls --insecure, for self-signed certificates or private CAs.",
|
||||
mysqlTlsMode: "TLS Mode",
|
||||
firebirdCharset: "Charset",
|
||||
firebirdCharsetHint: "Decodes text stored in CHARACTER SET NONE columns (for example legacy Chinese data saved as GBK). Pick the actual data encoding when text appears garbled.",
|
||||
mysqlTlsModePreferred: "Preferred",
|
||||
mysqlTlsModeDisabled: "Disabled",
|
||||
mysqlTlsModeRequired: "Required",
|
||||
|
||||
@@ -992,6 +992,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Omitir verificación del certificado",
|
||||
redisTlsInsecureHint: "Equivale a redis-cli --tls --insecure, para certificados autofirmados o CA privadas.",
|
||||
mysqlTlsMode: "Modo TLS",
|
||||
firebirdCharset: "Juego de caracteres",
|
||||
firebirdCharsetHint: "Decodifica el texto almacenado en columnas CHARACTER SET NONE (por ejemplo, datos chinos antiguos guardados como GBK). Elige la codificación real de los datos cuando el texto aparezca mal.",
|
||||
mysqlTlsModePreferred: "Preferido",
|
||||
mysqlTlsModeDisabled: "Deshabilitado",
|
||||
mysqlTlsModeRequired: "Requerido",
|
||||
|
||||
@@ -958,6 +958,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Lewati verifikasi sertifikat",
|
||||
redisTlsInsecureHint: "Setara dengan redis-cli --tls --insecure, untuk sertifikat self-signed atau CA privat.",
|
||||
mysqlTlsMode: "Mode TLS",
|
||||
firebirdCharset: "Charset",
|
||||
firebirdCharsetHint: "Mendekode teks yang disimpan di kolom CHARACTER SET NONE (misalnya data bahasa Mandarin lama yang disimpan sebagai GBK). Pilih pengodean data yang sebenarnya saat teks tampak rusak.",
|
||||
mysqlTlsModePreferred: "Preferred",
|
||||
mysqlTlsModeDisabled: "Dinonaktifkan",
|
||||
mysqlTlsModeRequired: "Wajib",
|
||||
|
||||
@@ -915,6 +915,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Salta verifica certificato",
|
||||
redisTlsInsecureHint: "Equivalente a redis-cli --tls --insecure, per certificati auto-firmati o CA private.",
|
||||
mysqlTlsMode: "Modalità TLS",
|
||||
firebirdCharset: "Set di caratteri",
|
||||
firebirdCharsetHint: "Decodifica il testo memorizzato nelle colonne CHARACTER SET NONE (ad esempio dati cinesi legacy salvati come GBK). Scegli la codifica effettiva dei dati quando il testo appare illeggibile.",
|
||||
mysqlTlsModePreferred: "Preferita",
|
||||
mysqlTlsModeDisabled: "Disabilitata",
|
||||
mysqlTlsModeRequired: "Richiesta",
|
||||
|
||||
@@ -915,6 +915,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "証明書の検証をスキップ",
|
||||
redisTlsInsecureHint: "自己署名証明書やプライベートCA用の、redis-cli --tls --insecure 相当の設定です。",
|
||||
mysqlTlsMode: "TLSモード",
|
||||
firebirdCharset: "文字セット",
|
||||
firebirdCharsetHint: "CHARACTER SET NONE の列に格納されたテキスト(例: GBK で保存された中国語の旧データ)をデコードします。文字化けする場合はデータの実際のエンコーディングを選択してください。",
|
||||
mysqlTlsModePreferred: "優先",
|
||||
mysqlTlsModeDisabled: "無効",
|
||||
mysqlTlsModeRequired: "必須",
|
||||
|
||||
@@ -950,6 +950,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "인증서 검증 건너뛰기",
|
||||
redisTlsInsecureHint: "redis-cli --tls --insecure과 동일하며, 자체 서명 인증서나 사설 CA용입니다.",
|
||||
mysqlTlsMode: "TLS 모드",
|
||||
firebirdCharset: "문자 집합",
|
||||
firebirdCharsetHint: "CHARACTER SET NONE 열에 저장된 텍스트(예: GBK로 저장된 예전 중국어 데이터)를 디코딩합니다. 텍스트가 깨져 보이면 데이터의 실제 인코딩을 선택하세요.",
|
||||
mysqlTlsModePreferred: "선호",
|
||||
mysqlTlsModeDisabled: "비활성화",
|
||||
mysqlTlsModeRequired: "필수",
|
||||
|
||||
@@ -916,6 +916,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Ignorar verificação de certificado",
|
||||
redisTlsInsecureHint: "Equivalente a redis-cli --tls --insecure, para certificados autoassinados ou CAs privadas.",
|
||||
mysqlTlsMode: "Modo TLS",
|
||||
firebirdCharset: "Conjunto de caracteres",
|
||||
firebirdCharsetHint: "Decodifica textos armazenados em colunas CHARACTER SET NONE (por exemplo, dados em chinês antigos salvos como GBK). Escolha a codificação real dos dados quando o texto aparecer corrompido.",
|
||||
mysqlTlsModePreferred: "Preferencial",
|
||||
mysqlTlsModeDisabled: "Desabilitado",
|
||||
mysqlTlsModeRequired: "Obrigatório",
|
||||
|
||||
@@ -931,6 +931,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Пропускать проверку сертификата",
|
||||
redisTlsInsecureHint: "Эквивалентно redis-cli --tls --insecure, для самоподписанных сертификатов или частных CA.",
|
||||
mysqlTlsMode: "Режим TLS",
|
||||
firebirdCharset: "Кодировка",
|
||||
firebirdCharsetHint: "Декодирует текст в столбцах CHARACTER SET NONE (например, старые китайские данные в кодировке GBK). Если текст отображается некорректно, выберите фактическую кодировку данных.",
|
||||
mysqlTlsModePreferred: "Предпочтительный",
|
||||
mysqlTlsModeDisabled: "Отключено",
|
||||
mysqlTlsModeRequired: "Обязательный",
|
||||
|
||||
@@ -733,6 +733,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "Sertifika doğrulamasını atla",
|
||||
redisTlsInsecureHint: "redis-cli --tls --insecure ile eşdeğerdir; kendinden imzalı sertifikalar veya özel CA'lar içindir.",
|
||||
mysqlTlsMode: "TLS Modu",
|
||||
firebirdCharset: "Karakter kümesi",
|
||||
firebirdCharsetHint: "CHARACTER SET NONE sütunlarında saklanan metni çözer (örneğin GBK olarak kaydedilmiş eski Çince veriler). Metin bozuk göründüğünde verinin gerçek kodlamasını seçin.",
|
||||
mysqlTlsModePreferred: "Tercih edilen",
|
||||
mysqlTlsModeDisabled: "Devre dışı",
|
||||
mysqlTlsModeRequired: "Zorunlu",
|
||||
|
||||
@@ -956,6 +956,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "跳过证书验证",
|
||||
redisTlsInsecureHint: "等价于 redis-cli --tls --insecure,适用于自签名证书或私有 CA。",
|
||||
mysqlTlsMode: "TLS 模式",
|
||||
firebirdCharset: "连接字符集",
|
||||
firebirdCharsetHint: "用于解码 CHARACTER SET NONE 字段中的文本(例如旧库以 GBK 存放的中文)。文本出现乱码时,请按数据的实际编码选择。",
|
||||
mysqlTlsModePreferred: "优先使用",
|
||||
mysqlTlsModeDisabled: "禁用",
|
||||
mysqlTlsModeRequired: "必须使用",
|
||||
|
||||
@@ -920,6 +920,8 @@ export default withEnglishFallback({
|
||||
redisTlsInsecure: "跳過憑證驗證",
|
||||
redisTlsInsecureHint: "等價於 redis-cli --tls --insecure,適用於自簽名憑證或私有 CA。",
|
||||
mysqlTlsMode: "TLS 模式",
|
||||
firebirdCharset: "連線字元集",
|
||||
firebirdCharsetHint: "用於解碼 CHARACTER SET NONE 欄位中的文字(例如舊資料庫以 GBK 儲存的中文)。文字出現亂碼時,請依資料的實際編碼選擇。",
|
||||
mysqlTlsModePreferred: "優先使用",
|
||||
mysqlTlsModeDisabled: "停用",
|
||||
mysqlTlsModeRequired: "必須使用",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
Reference in New Issue
Block a user