2017-03-09 1 views
1

일본어로 이름이 지정된 XML 파일이 있습니다. 나는 루아를 사용하여 그것들을 읽고 테이블에 필요한 정보를 넣는다. 이름 .xml과 같은 한자로만 명명 된 파일을 열 수 있었지만 이름 앞 .xml과 같은 여러 가지 kanjis의 경우 반대였습니다. 루아 파일을 실행하기 전에 커맨드 라인의 코드 페이지를 65001 (UTF-8)로 설정했습니다. 그리고 ACP (ASCII 코드 페이지?)에서 WinAPI 라이브러리를 사용하여 파일 이름을 인코딩해야하는 파일을 UTF-8로 읽으려면이 인코딩은 단일 kanjis에서만 작동합니다. 나는 인터넷을 통해 몇 가지 제안을 시도했다, 파일에 짧은 경로를 사용하여, 등등 그들 중 누구도 일했다. 나는 관리자로서 Lua를 실행함으로써 짧은 경로를 사용하려고 시도했다. 짧은 경로를 사용하기 위해서는 관리자가 우선적으로 필요로하는 다른 비슷한 질문에서 언급했듯이 운이 없다.루아에서 일본어 이름의 파일 열기

하지만 내 코드에서 "잘못된 인수"오류가 발생했습니다. 이 오류를 검색했지만 루아와 관련된 것은 하나도 없으므로 C/C++ 관련 항목을 열었습니다. 그러나 '_wfopen'또는 이와 비슷한 것을 사용했습니다. 그것은 루아에서 구현되지 않았으며 둘 다 나 자신을 구현하고 싶지 않습니다. 그럼 누구든지 어떻게 해결할 수 있을지 알아? 자세한 내용은 저에게 알려주십시오. 감사!

+0

'winapi.encode()'는 무엇을 반환합니까? print (fn : byte (1, -1))의 출력을 보여주십시오. 어떤 짧은 파일 이름 (예 : "이름 .xml")에 대해 print (winapi.encode (winapi.CP_UTF8, winapi.CP_ACP, fn) : 바이트 (1, -1))' –

+0

그리고 ACP (ansi 코드 페이지) ? Windows 레지스트리'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage \ ACP'에서 볼 수 있습니다. –

+0

@EgorSkriptunoff UTF-8에서 : '229 144 141 229 137 141 46 120 109 108' to ACP :'150 188 145 79 46 120 109 108'이고 ACP는 932입니다. – Ortimh

답변

2

나는 당신의 프로그램이 작동하지 않는 이유를 알고 있지만이 해결하려고하지 않는 : 당신이

local jaAlphbet={"一","|","丶","ノ","乙","亅","<","二","亠","人","⺅","","儿","入","ハ","丷","冂","冖","冫","几","凵","刀","⺉","力","勹","匕","匚","十","卜","卩","厂","厶","又","マ","九","ユ","乃","","⻌","口","囗","土","士","夂","夕","大","女","子","宀","寸","小","⺌","尢","尸","屮","山","川","巛","工","已","巾","干","幺","广","廴,"廾","弋","弓","ヨ","彑","彡","彳","⺖","⺘","⺡","⺨","⺾","⻏","⻖","也","亡","及","久","⺹","心","戈","戸","手","支","攵","文","斗","斤","方","无","日","曰","月","木","欠","止","歹","殳","比","毛","氏","气","水","火","⺣","爪","父","爻","爿","片","牛","犬","⺭","王","元","井","勿","尤","五","屯","巴","毋","玄","瓦","甘","生","用","田","疋","疒","癶","白","皮","皿","目","矛","矢","石","示","禸","禾","穴","立","⻂","世","巨","冊","母","⺲","牙","瓜","竹","米","糸","缶","羊","羽","而","耒","耳","聿","肉","自","至","臼","舌","舟","艮","色","虍","虫","血","行","衣","西","臣","見","角","言","谷","豆","豕","豸","貝","赤","走","足","身","車","辛","辰","酉","釆","里","舛","麦","金","長","門","隶","隹","雨","青","非","奄","岡","免","斉","面","革","韭","音","頁","風","飛","食","首","香","品","馬","骨","高","髟","鬥","鬯","鬲","鬼","竜","韋","魚","鳥","鹵","鹿","麻","亀","啇","黄","黒","黍","黹","無","歯","黽","鼎","鼓","鼠","鼻","齊","龠"} 
print(jaAlphbet[1])--and you can call the letters, letter by letter 

죄송하지만, 그게 전부 같은 테이블에서 일본어 문자를 사용할 수 있다고 생각

local pipe = io.popen([[for %G in (xml\*) do @(type "%G" & echo @FILENAMEMARKER#%G)]], "rb") 
local all_files = pipe:read"*a" 
pipe:close() 
for filecontent, filename in all_files:gmatch"(.-)@FILENAMEMARKER#(.-)\r?\n" do 
    -- process your file here 
    print('===== This is your file name:') 
    print(filename) 
    print('== This is your file content:') 
    print(filecontent) 
    print('== End of file') 
end 
+0

이 해결 방법을 제공해 주셔서 감사합니다! 그것은 내가 필요한 콘텐츠를 제공합니다. :) – Ortimh

0

을 모두 당신이 말하는 주제에 대해 알고 있지만 이것이 도움이되기를 바랍니다.