gpt4 book ai didi

json - Excel 到 JSON(使用 VBA)土耳其语字符问题

转载 作者:行者123 更新时间:2023-12-02 22:26:36 27 4
gpt4 key购买 nike

我正在使用 VBA 将 Excel 表格转换为 Json。
但是,当我查看输出 Json 文件时,土耳其字符看起来不平滑。

例如,

in Excel table, "HAYRETTIN YILMAZ"
in Json, HAYRETTÝN YILMAZ

in Excel table, "HÜSEYİN DURAK"
in Json, HÜSEYÝN DURAK

如何修复它?

您可以在下面找到我的 VBA 代码:

Sub deneme()
savename = "deneme.js"
Dim wkb As Workbook
Dim wks As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Sheets(2)
lcolumn = wks.Cells(1, Columns.Count).End(xlToLeft).Column ' Var olan sütunun en sonu
lrow = wks.Cells(Rows.Count, "A").End(xlUp).Row ' Var olan satırın en sonu
Dim titles() As String

ReDim titles(lcolumn)
For i = 1 To lcolumn
titles(i) = wks.Cells(1, i)
Next i

wks.Columns(50).ClearContents
json = "var deneme = { " & vbCrLf
dq = """"
m = 1
For i = 2 To ActiveSheet.Range("a1048576").End(3).Row
If WorksheetFunction.CountIf(wks.Columns("a"), wks.Cells(i, 1)) = 1 Then

json = json & vbCrLf & dq & wks.Cells(i, 1) & dq & ": {" & vbCrLf
For k = 1 To lcolumn
cellvalue = wks.Cells(i, k)
json = json & dq & titles(k) & dq & ":" & dq & cellvalue & dq
If k <> lcolumn Then ' Son sütun değilse
json = json & "," & vbCrLf

ElseIf k = lcolumn Then
json = json & vbCrLf & "}," & vbCrLf
End If

Next k

'json = json & dq & wks.Cells(1, 1) & dq & ":" & dq & wks.Cells(i, 1) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 2) & dq & ":" & dq & wks.Cells(i, 2) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 3) & dq & ":" & dq & wks.Cells(i, 3) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 4) & dq & ":" & dq & wks.Cells(i, 4) & dq & vbCrLf & "}," & vbCrLf

Else
If wks.Cells(i, 50) = "" Then
For j = i To ActiveSheet.Range("a1048576").End(3).Row
If wks.Cells(j, 1) = wks.Cells(i, 1) Then
If j = i Then

json = json & dq & wks.Cells(i, 1) & dq & ": [{" & vbCrLf
For k = 1 To lcolumn
cellvalue = wks.Cells(i, k)

json = json & dq & titles(k) & dq & ":" & dq & cellvalue & dq

If k <> lcolumn Then ' Son sütun değilse
json = json & "," & vbCrLf

ElseIf k = lcolumn Then
json = json & vbCrLf & "},"
End If

Next k

'json = json & dq & wks.Cells(1, 1) & dq & ":" & dq & wks.Cells(j, 1) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 2) & dq & ":" & dq & wks.Cells(j, 2) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 3) & dq & ":" & dq & wks.Cells(j, 3) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 4) & dq & ":" & dq & wks.Cells(j, 4) & dq & vbCrLf & "},"

Else

json = json & vbCrLf & "{" & vbCrLf

For k = 1 To lcolumn
cellvalue = wks.Cells(i, k)
json = json & dq & titles(k) & dq & ":" & dq & cellvalue & dq

If k <> lcolumn Then ' Son sütun değilse
json = json & "," & vbCrLf

ElseIf k = lcolumn Then
json = json & vbCrLf & "},"
End If

Next k

'json = json & dq & wks.Cells(1, 1) & dq & ":" & dq & wks.Cells(j, 1) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 2) & dq & ":" & dq & wks.Cells(j, 2) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 3) & dq & ":" & dq & wks.Cells(j, 3) & dq & "," & vbCrLf
'json = json & dq & wks.Cells(1, 4) & dq & ":" & dq & wks.Cells(j, 4) & dq & vbCrLf & "},"
End If
wks.Cells(j, 50) = 1
End If
Next j
json = Left(json, Len(json) - 1) & "]," & vbCrLf
End If
End If
Next i
json = Left(json, Len(json) - 3) & vbCrLf & "}" & vbCrLf & "}"

myFile = "C:\Users\xxx\Desktop\" & savename
Open myFile For Output As #1
Print #1, json
Close #1
End Sub

@PeterT,我不想使用 JsonConverter,因为我们公司的政策。因此,我在上面编写了我的代码。当我使用 Excel 到 Json 的代码时,“HAYRETTIN YILMAZ”似乎是“HAYRETTÝN YILMAZ”。

此外,您的第三项已更改。 “HÜSEYıN DURAK”->“H\u00DCSEY\u0130N DURAK”。 JsonConverter也有同样的问题。

我该如何修复它?

谢谢。

最佳答案

我用 JsonConverter 进行了测试并取得了以下成果。这与您得到的有什么不同吗?

enter image description here

Option Explicit

Sub deneme()
Dim topLevel As Dictionary
Set topLevel = New Dictionary

topLevel.Add "Item1", Cells(1, 1).Value
topLevel.Add "Item2", Cells(1, 2).Value
topLevel.Add "Item3", Cells(2, 1).Value
topLevel.Add "Item4", Cells(2, 2).Value

Dim json As String
json = ConvertToJson(JsonValue:=topLevel, Whitespace:=2)

Debug.Print json
End Sub

生成以下 JSON:

{
"Item1": "HAYRETTIN YILMAZ",
"Item2": "HAYRETT\u00DDN YILMAZ",
"Item3": "H\u00DCSEY\u0130N DURAK",
"Item4": "H\u00DCSEY\u00DDN DURAK"
}

关于json - Excel 到 JSON(使用 VBA)土耳其语字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com