On the confirm page, add a recordset that is filtered by the zone and weight to return the correct charge.
Then set a session variable from that recordset result.
You can create a shipping rule to charge the amount stored in the session variable as the shipping charge.